MATLAB Answers

How to draw line vertical to Y-axis?

431 views (last 30 days)
M G
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.
Thanks so much in advance,
Mehdi

  0 Comments

Sign in to comment.

Accepted Answer

Walter Roberson
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');

  5 Comments

Show 2 older comments
Walter Roberson
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
Sven on 6 Nov 2011
Last line, Walter :)
Sven
Sven on 7 Nov 2011
Ah... so now you go ahead and silently fix the typo just to make me look silly :)

Sign in to comment.

More Answers (5)

Noushin Farnoud
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.

  0 Comments

Sign in to comment.


Sven
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')

  4 Comments

Show 1 older comment
Sven
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".
Sven
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

Sign in to comment.


James
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');

  0 Comments

Sign in to comment.


Eric Sargent
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');

  0 Comments

Sign in to comment.


Wayne King
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
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

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by