I would like to insert a vertical bar (light blue) from Time = 500 to Time = 650 to highlight that section of the curve. I believe patch is the tool to use. I followed examples provided on MathWorks, but my curve disappears when I use the recommended code. How can I incorporate patch into the code below?
plot(t,B);
xlabel('Time (in days)');
ylabel('Mosquitoes Searching for a Blood Meal');
h_xlabel = get(gca,'XLabel');
set(h_xlabel,'FontSize',14);
h_ylabel = get(gca,'YLabel');
set(h_ylabel,'FontSize',14);
set(gca,'fontName','Helvetica');
hold on;
I know that I should use patch before plotting my curve so that the vertical bar does not cover the curve.

 採用された回答

Star Strider
Star Strider 2018 年 3 月 10 日

0 投票

Try this:
t = linspace(350, 750); % Create Data
y = sin(2*pi*t/200 + 2) .* cos(2*pi*t/300)*0.2 + 0.2; % Create Data
ptchidx = (t >= 500) & (t <= 650); % Area To Shade
figure(1)
plot(t, y)
hold on
patch([t(ptchidx) fliplr(t(ptchidx))], [y(ptchidx) zeros(size(y(ptchidx)))], [0.6 0.4 0.9], 'FaceAlpha',0.3, 'EdgeColor','none')
hold off
grid

6 件のコメント

árbol
árbol 2018 年 3 月 10 日
@Star Strider: Thanks for the suggestion! Using the code, I get this plot:
I would like the shaded region to stretch from y = 0 to y = .4. Would I modify the following line of code?
patch([t(ptchidx) fliplr(t(ptchidx))], [y(ptchidx) zeros(size(y(ptchidx)))], [0.6 0.4 0.9], 'FaceAlpha',0.3, 'EdgeColor','none')
Specifically, would I change this section?
[y(ptchidx) zeros(size(y(ptchidx)))]
Thanks!
Star Strider
Star Strider 2018 年 3 月 10 日
My pleasiure!
If you just want the shaded box behind the plot, this works:
patch([500 650 650 500], [ 0 0 [1 1]*max(ylim)], [0.6 0.4 0.9], 'FaceAlpha',0.3, 'EdgeColor','none')
It is essentially the same code. The ‘x’-coordinates are now simply the limits of the box, and the ‘y’-coordinates go from 0 to the maximum value of the y-limits, so it will scale automatically if you change them.
If you want to hard-code the limits to 0.4, this will work:
patch([500 650 650 500], [ 0 0 [1 1]*0.4], [0.6 0.4 0.9], 'FaceAlpha',0.3, 'EdgeColor','none')
Experiment with the other properties of the patch function to get the result you want.
árbol
árbol 2018 年 3 月 11 日
@Star Strider: Thank you!
Star Strider
Star Strider 2018 年 3 月 11 日
As always, my pleasure!
Luca Pozzi
Luca Pozzi 2018 年 5 月 28 日
編集済み: Luca Pozzi 2018 年 5 月 28 日
Thank you for the answer @Star Strider, it's very useful, but now here I come with a more complicated question: I would insert a vertical bar, just as the one @A. Kachalia succedeed to have, wherever the derivatives of the two signals in the plot haven't the same sign.
I thought to make a for (with some if inside) so to have in ptchidx all the intervals I'm looking for. Is it right? Is the rest of the code still valid for my purpose? Thank you very much
Star Strider
Star Strider 2018 年 5 月 29 日
Post this as a new question.
Also, add detail, data, and code.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange2-D and 3-D Plots についてさらに検索

タグ

質問済み:

2018 年 3 月 10 日

コメント済み:

2018 年 5 月 29 日

Community Treasure Hunt

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

Start Hunting!

Translated by