Mark specific values on a plot!

7 Ansichten (letzte 30 Tage)
Panos Ale
Panos Ale am 19 Okt. 2017
Beantwortet: Hellen Nassuna am 8 Okt. 2018
Hi consider the following plot:
x=1:100;
y=600+(1400-600).*rand(100,1);
plot(x,y)
How can I mark the y values between 900 and 1100? Thanks!
  1 Kommentar
Rik
Rik am 19 Okt. 2017
With hold on and plotting a line over it with an increased line width you could emphasize a certain range.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Birdman
Birdman am 19 Okt. 2017
Additional to your code, use the following lines:
yMark=zeros(1,100);%preallocation for speed
for i=1:1:length(y)
if(y(i)>=900 && y(i)<=1100)
yMark(i)=y(i);
end
end
plot(x,yMark,'->')
  2 Kommentare
Rik
Rik am 19 Okt. 2017
You can vectorize the loop:
yMark=zeros(1,100);
yMark(y>=900 & y<=1100)=y(y>=900 & y<=1100)
Be aware that this code (both mine and the loop) will result in zero values outside the wanted range. You can fix this by either initializing to a NaN (just replace zeros with NaN), or shortening x the same way as you shorten y:
yMark=y(y>=900 & y<=1100)
xMark=x(y>=900 & y<=1100)
Birdman
Birdman am 19 Okt. 2017
Yes you are right. It will make the code more efficient. I just wanted to mark those values on the plot. Thank you for your attention.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Hellen Nassuna
Hellen Nassuna am 8 Okt. 2018
x=1:100;
y=600+(1400-600).*rand(100,1);
plot(x,y)
hold on;
yMark=NaN(1,100);%preallocation for speed
for i=1:1:length(y)
if(y(i)>=900 && y(i)<=1100)
yMark(i)=y(i);
end
end
plot(x,yMark,'->')
hold off
if true
% code
end

Kategorien

Mehr zu Graphics Performance 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!

Translated by