How to draw line vertical to Y-axis?

조회 수: 29 (최근 30일)
M G
M G 2011년 11월 2일
댓글: Walter Roberson 2021년 4월 12일
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

채택된 답변

Walter Roberson
Walter Roberson 2011년 11월 2일
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');
  댓글 수: 7
Gourav Mitra
Gourav Mitra 2021년 4월 12일
it works fine but in some case, the vertical line doesnot fit or cover the entire ylimit.
Walter Roberson
Walter Roberson 2021년 4월 12일
These days, see yline()
If you get the current ylim and use it to draw, and then you zoom or pan, then the code I posted back then will not adjust to draw according to the new limits. However, the newer yline() should do that.

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

추가 답변 (5개)

Noushin Farnoud
Noushin Farnoud 2011년 11월 15일
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.

Eric Sargent
Eric Sargent 2019년 10월 15일
Starting in R2018b you can simply use xline and yline.
In this case:
yline(4,'r');
yline(7,'r');

Sven
Sven 2011년 11월 2일
Hi Mehdi, try this after plotting:
xlims = get(gca,'XLim');
hold on
plot(xlims, [4 4], '-r')
plot(xlims, [7 7], '-r')
  댓글 수: 4
Walter Roberson
Walter Roberson 2011년 11월 2일
Confusing...
Sven
Sven 2011년 11월 2일
Doh! I voted yours up and now it's above mine... that's a blow to my chances for getting accepted! heheh

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


James
James 2014년 3월 28일
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');

Wayne King
Wayne King 2011년 11월 2일
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
Walter Roberson
Walter Roberson 2011년 11월 2일
A bit murky if "a" does not happen to be in sorted order, especially if the drawingmode is set to xor

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

카테고리

Help CenterFile Exchange에서 Graphics Performance에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by