How to draw vertical lines in between categorical x-axis ticks

33 views (last 30 days)
I have some data that I display using the plot function, with categorical labels on the x-axis. I would like to draw vertical lines in between some of the x-axis tick marks, but not all. I would appreciate suggestions on how to do this. I'm using Matlab 2017a.
I can easily draw a vertical line exactly on the x-axis tick marks, using something like this:
plot([xNames(5), xNames(5)],[0 1],'k')
where xNames is my array with the categorical names. But I would like to adjust this so that a vertical line is drawn between, e.g., xNames(5) and xNames(6).

Accepted Answer

HW
HW on 6 Jan 2018
I figured it out; the key is to not plot with categorical axis too early. I did something like
plot(1:34, 2*[1:34],'ko')
set(gca,'XTick',1:34)
hold on, plot([3.5 3.5],[-0.5 0.5],'k')
hold on, plot([6.5 6.5],[-0.5 0.5],'k')
hold on, plot([20.5 20.5],[-0.5 0.5],'k')
hold on, plot([30.5 30.5],[-0.5 0.5],'k')
set(gca,'XTickLabel',string(xNames))
xtickangle(45)
  1 Comment
Jos (10584)
Jos (10584) on 6 Jan 2018
the repeated hold on and plot(..) commands can be replaced by using
gridxy([3.5 6.5 20.5 30.5]), 'color', 'k')
(see link in my answer)

Sign in to comment.

More Answers (1)

Jos (10584)
Jos (10584) on 4 Jan 2018
Edited: Jos (10584) on 4 Jan 2018
Use the average?
v = (xNames(5)+ xNames(6))/2
plot([v v], ...)
You might also be interested in various utilities on the File Exchange that can plot vertical and horizontal grid lines at specific places, like my own GRIDXY
  3 Comments
HW
HW on 5 Jan 2018
I really would like to have the line to be drawn between two tick marks. I would prefer to not add anything visual to the x-axis, even additional tick marks.

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!