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!

 채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2014년 10월 20일

8 개 추천

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

Brando Miranda
Brando Miranda 2017년 10월 14일
can u explain?
Eric Sargent
Eric Sargent 2020년 6월 23일
Starting in R2018b you can use xline and yline.

댓글을 달려면 로그인하십시오.

추가 답변 (5개)

Kelly Kearney
Kelly Kearney 2014년 10월 20일

4 개 추천

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

댓글 수: 5

Brando Miranda
Brando Miranda 2017년 10월 14일
why does this work?
Image Analyst
Image Analyst 2017년 10월 14일
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 2021년 11월 16일
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);
Alberto Sivera
Alberto Sivera 2021년 11월 17일
thank you, but unfortunately I have the r2017b version and i'm too lazy to update it :)

댓글을 달려면 로그인하십시오.

Pierre Tallotte
Pierre Tallotte 2020년 4월 10일

3 개 추천

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 2014년 10월 20일

1 개 추천

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

댓글 수: 3

Liyuan
Liyuan 2017년 7월 27일
편집: Liyuan 2017년 7월 27일
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 2017년 7월 27일
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 2017년 8월 28일
@Liyuan: See my answer.

댓글을 달려면 로그인하십시오.

Jan
Jan 2017년 8월 28일

1 개 추천

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 2020년 10월 23일

0 개 추천

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

댓글 수: 1

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().

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

질문:

2014년 10월 20일

댓글:

2021년 11월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by