# How to draw line vertical to Y-axis?

342 views (last 30 days)
M G on 2 Nov 2011
Answered: Eric Sargent on 15 Oct 2019
Hey Matlab users,
If a = [1 2 3 4 5 6 7]; and b = [1 4 7 10 7 4 1]; and the plot it by : figure,plot(a,b), how can I draw let's say a red line vertical to the value 4 and 7 in the y-axis (parallel to x-axis)? So that i can see the window between 4 and 7.
Mehdi

Walter Roberson on 2 Nov 2011
The same as for your previous question. The solution for that was
yL = get(gca,'YLim');
line([3 3],yL,'Color','r');
line([5 5],yL,'Color','r');
and if you are wanting to draw vertical lines at 4 and 7, you would just change the code to
yL = get(gca,'YLim');
line([4 4],yL,'Color','r');
line([7 7],yL,'Color','r');
Perhaps what you want is instead horizontal lines? If so then
xL = get(gca,'XLim');
line(xL,[4 4],'Color','r');
line(xL,[7 7],'Color','r');

Walter Roberson on 2 Nov 2011
Typo? Now you've got me going over it character by character, because I can't find a typo... agggh!
Sven on 6 Nov 2011
Last line, Walter :)
Sven on 7 Nov 2011
Ah... so now you go ahead and silently fix the typo just to make me look silly :)

Noushin Farnoud on 15 Nov 2011
If you want to draw a line that spans the entire xlim or ylim of your figure, then I suggest that you use hline or vline functions from: http://www.mathworks.com/matlabcentral/fileexchange/1039-hline-and-vline
You can also plot multiple vertical or horizontal lines at the same time using these functions. For example: hline([5,6,8]) draws 3 horizontal lines at x=5, x=6 and x=8.

Sven on 2 Nov 2011
Hi Mehdi, try this after plotting:
xlims = get(gca,'XLim');
hold on
plot(xlims, [4 4], '-r')
plot(xlims, [7 7], '-r')

Show 1 older comment
Sven on 2 Nov 2011
The questions is a little ambiguous. I went with vertical lines first however note that the questioner wants lines "parallel to x-axis".
Walter Roberson on 2 Nov 2011
Confusing...
Sven on 2 Nov 2011
Doh! I voted yours up and now it's above mine... that's a blow to my chances for getting accepted! heheh

James on 28 Mar 2014
There is an excellent answer over on http://stackoverflow.com/a/8108766/1194420 repeated below for convenience. ---
There exist an undocumented function graph2d.constantline:
plot(-2:5, (-2:5).^2-1)
%# vertical line
hx = graph2d.constantline(0, 'LineStyle',':', 'Color',[.7 .7 .7]);
changedependvar(hx,'x');
%# horizontal line
hy = graph2d.constantline(0, 'Color',[.7 .7 .7]);
changedependvar(hy,'y');

Eric Sargent on 15 Oct 2019
Starting in R2018b you can simply use xline and yline.
In this case:
yline(4,'r');
yline(7,'r');

Wayne King on 2 Nov 2011
a = [1 2 3 4 5 6 7];
b = [1 4 7 10 7 4 1];
plot(a,b)
hold on
plot(a,4*ones(length(b)),'r');
plot(a,7*ones(length(b)),'r');

#### 1 Comment

Walter Roberson on 2 Nov 2011
A bit murky if "a" does not happen to be in sorted order, especially if the drawingmode is set to xor