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!

 Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 20 de Oct. de 2014

8 votos

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 comentarios

Brando Miranda
Brando Miranda el 14 de Oct. de 2017
can u explain?
Eric Sargent
Eric Sargent el 23 de Jun. de 2020
Starting in R2018b you can use xline and yline.

Iniciar sesión para comentar.

Más respuestas (5)

Kelly Kearney
Kelly Kearney el 20 de Oct. de 2014

4 votos

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

5 comentarios

Brando Miranda
Brando Miranda el 14 de Oct. de 2017
why does this work?
Image Analyst
Image Analyst el 14 de Oct. de 2017
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).
Alberto Sivera
Alberto Sivera el 16 de Nov. de 2021
thx a lot, you saved my life, really
Image Analyst
Image Analyst el 17 de Nov. de 2021
@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);
Alberto Sivera
Alberto Sivera el 17 de Nov. de 2021
thank you, but unfortunately I have the r2017b version and i'm too lazy to update it :)

Iniciar sesión para comentar.

Pierre Tallotte
Pierre Tallotte el 10 de Abr. de 2020

3 votos

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);
Image Analyst
Image Analyst el 20 de Oct. de 2014

1 voto

simply pass in ylim for the y array:
line([x1 x1], ylim);

3 comentarios

Liyuan
Liyuan el 27 de Jul. de 2017
Editada: Liyuan el 27 de Jul. de 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)
Image Analyst
Image Analyst el 27 de Jul. de 2017
Not sure.
ylim() is not returning the correct y axis range limits.
That certainly is weird. I'd call tech support on this one.
Jan
Jan el 28 de Ag. de 2017
@Liyuan: See my answer.

Iniciar sesión para comentar.

Jan
Jan el 28 de Ag. de 2017

1 voto

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.
Jefferson Martinez Saavedra
Jefferson Martinez Saavedra el 23 de Oct. de 2020

0 votos

Does someone know how to get/download xline and yline functions? I have R2018a's version of MATLAB.
Thank you in advance.

1 comentario

Image Analyst
Image Analyst el 23 de Oct. de 2020
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().

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 20 de Oct. de 2014

Comentada:

el 17 de Nov. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by