Vertical lines with text in plot
60 次查看(过去 30 天)
显示 更早的评论
Hello everybody
I have created a plot in Matlab. Let's assume for simplicity that I have the following plot:
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
Now I would like to add vertical lines (going from the bottom of the figure to the top) at positions x = 1, x = 3 and x = 5. Additionally, the vertical lines should have text (next to the line or on top of the line). For example, for the line at x = 1 I would like to have the text "test 1".
How can this be done? This seems to be a pretty tricky thing in Matlab.
采纳的回答
Star Strider
2017-9-27
To draw the lines, you need to specify duplicate x-coordinates to match the two-element ylim vectors. Here, the ylim matrix is transposed (the ' operator) so the vertical lines plot correctly.
The text call to label the lines is straightforward. You need to provide a vector of x and y coordinates, and a matching cell array of strings.
Try this:
x = 0:pi/100:2*pi;
y = sin(x);
figure(1)
plot(x,y)
hold on
plot([1 3 5; 1 3 5], [ylim; ylim; ylim]')
hold off
text([1 3 5], 0.7*[1 1 1], {'Test 1', 'Test 2', 'Test 3'})
It’s not ‘tricky’ really. It just requires a bit of experience with the functions, and when necessary, experimentation to see what works.
3 个评论
Cedric
2017-9-28
yl = ylim() ;
text([1 3 5], yl(2)*0.7*[1 1 1], {'Test 1', 'Test 2', 'Test 3'})
Star Strider
2017-9-28
@Cedric — Thank you! (I was off doing other things for a few minutes.)
@Sepp — My pleasure. The key is to use ylim to scale the y-position of the labels. The advantage is that with ylim (in Cedric’s comment, yl(2) is the upper limit of the y-axis) automatically rescales with changing limits of the y-axis.
更多回答(1 个)
Jan
2017-9-27
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y);
hold('on');
line([1 3 5; 1 3 5], [-10, -10, -10; 10, 10, 10], 'YLimInclude', 'off');
text([1 3 5], [1, 1, 1], {'Test 1', 'Test 2', 'Test 3'}, ...
'VerticalAlignment', 'top')
Disabling 'YLimInclude' let the Y-limits untouched by this object. Then you can even Zoom in the diagram without seeing the end of the line (at least until a certain level). Unfortunately YLimInclude is undocumented, but it works for many years now.
1 个评论
Yair Altman
2017-10-17
Here is the unofficial documentation for the undocumented YLimInclude property: http://undocumentedmatlab.com/blog/plot-liminclude-properties
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!