How to write a value on a specific portion which is constant on a graph?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
yashvin
am 1 Jul. 2015
Kommentiert: yashvin
am 2 Jul. 2015
Hi ,
I want to write something on parts of a graph which are constant.
For example,
a=[1 2 2 2 2 2 2 2 2 2 3 5 5 5 5 5 5 5 ]
b=[1:1:length(a)]
plot(b,a)
My graph is attached.
For the portion on the xaxis, from 2 to 10, i want to write "level=2" on top of the constant line and from 12 to 18, i want to write "level 5" on top of the constant line.
Anyway of doing it in MATLAB?
2 Kommentare
Akzeptierte Antwort
Stephen23
am 1 Jul. 2015
Bearbeitet: Stephen23
am 1 Jul. 2015
Try this:
a = [1,2,2,2,2,2,2,2,2,2,3,5,5,5,5,5,5,5];
b = 1:numel(a);
%
d = [1,diff(a),1]; % differences between values
s = find(d(1:end-1)); % begin of contiguous blocks
e = find(d(2:end)); % end of contiguous blocks
n = e-s;
x = n>0; % select how many must be in a block
p = mean([s(x);e(x)],1); % x-positions
v = a(s(x)); % y-positions
t = arrayfun(@(n)sprintf('level %g',n),v,'UniformOutput',false);
%
plot(b,a)
text(p,v,t,'VerticalAlignment','top')
Which generates this figure:

Note that I placed the text under the line as the axes do not resize automatically to fit the text. Of course you can change this and many other options, such as the horizontal alignment, typeface, font size etc. See the text properties for more info on this.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Line Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
