Mark specific values on a plot!

8 visualizzazioni (ultimi 30 giorni)
Panos Ale
Panos Ale il 19 Ott 2017
Risposto: Hellen Nassuna il 8 Ott 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 Commento
Rik
Rik il 19 Ott 2017
With hold on and plotting a line over it with an increased line width you could emphasize a certain range.

Accedi per commentare.

Risposta accettata

Birdman
Birdman il 19 Ott 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 Commenti
Rik
Rik il 19 Ott 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 il 19 Ott 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.

Accedi per commentare.

Più risposte (1)

Hellen Nassuna
Hellen Nassuna il 8 Ott 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

Categorie

Scopri di più su Graphics Performance in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by