Mark specific values on a plot!
7 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Rik
2017 年 10 月 19 日
With hold on and plotting a line over it with an increased line width you could emphasize a certain range.
採用された回答
Birdman
2017 年 10 月 19 日
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 件のコメント
Rik
2017 年 10 月 19 日
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
2017 年 10 月 19 日
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.
その他の回答 (1 件)
Hellen Nassuna
2018 年 10 月 8 日
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
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Graphics Performance についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!