How to plot vertical lines?

This is the script:
x=[0:0.1:10]; x1=5;
plot(x,2*sin(x),x,5*sin(x),x,cos(x));
line([x1 x1],???????);
I would like to plot the vertical line from the top to the bottom without knowing the y-axis limits.
Thanks in advance!

 Accepted Answer

x=[0:0.1:10];
x1=5;
plot(x,2*sin(x),x,5*sin(x),x,cos(x));
y1=get(gca,'ylim')
hold on
plot([x1 x1],y1)

2 Comments

can u explain?
Starting in R2018b you can use xline and yline.

Sign in to comment.

More Answers (5)

line([x1 x1], get(gca, 'ylim'));
Or this function will automate the process, if you have a lot of reference lines to plot.

5 Comments

why does this work?
get(gca, 'ylim') gives you a 2 element array with the lower limit on the y axis, and the upper limit on the y axis, whatever they are. The second argument of line is a list of the y values corresponding the x elements, so it will make a line from (x1, lower y limit) to x1, upper y limit).
thx a lot, you saved my life, really
@Alberto Sivera if you have R2018b or later, you should really be using xline() like @Pierre Tallotte shows in his answer below.
xline(x1, 'Color', 'r', 'LineWidth', 2);
thank you, but unfortunately I have the r2017b version and i'm too lazy to update it :)

Sign in to comment.

The xline function is just what you need:
x=[0:0.1:10]; x1=5;
plot(x,2*sin(x),x,5*sin(x),x,cos(x));
xline(x1);
simply pass in ylim for the y array:
line([x1 x1], ylim);

3 Comments

Liyuan
Liyuan on 27 Jul 2017
Edited: Liyuan on 27 Jul 2017
I am having a strange problem. When I draw the line with ylim the y axis automatically resizes such that my line doesn't extend fully to the top. Then when I draw another line with ylim it doesn't do this strange resizing. What could be the problem?
My code:
clf
x=0:0.1:10;
y1 = normpdf(x,5,1.5);
y2 = normpdf(x,6,1.5);
hold on
plot(x,y1)
plot(x,y2)
line([5 5],ylim)
Not sure.
ylim() is not returning the correct y axis range limits.
That certainly is weird. I'd call tech support on this one.
@Liyuan: See my answer.

Sign in to comment.

If the axes is scaled, e.g. when adding new objects or for printing, using the current limits for the Y-position is fragile. You can use much larger positions and exclude the line from the list of objects, which influence the auto-scaling:
YL = get(gca, 'ylim');
YR = YL(2) - YL(1);
YL = [YL(1) - 1000 * YR, YL(2) + 1000 * YR];
line([5, 5], YL, 'YLimInclude', 'off')
'YLimInclude' in undocumented and might be removed in the future.
Does someone know how to get/download xline and yline functions? I have R2018a's version of MATLAB.
Thank you in advance.

1 Comment

If you dont' have xline and yline you can use line():
xl = xlim;
yl = ylim;
line([x, x], yl); % Old way of doing xline().
line(xl, [y, y]); % Old way of doing yline().

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!