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.

Categories

Find more on Graphics Object Properties in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!