線と線の間の塗りつぶし

こんな図をつくりたい

2本の直線または曲線を基準に,その間の部分を着色したいときに.
完成図として期待されるのは次のようなやつ.

areasample.jpg

なおこの図のデータはサンプルであり,特に意味を持つものではない.

方法

適当にデータをつくっておく.

% Sample data
x = 0.0:0.01:10.0;
x = x';
y1 = -0.75*x+8.0;
y2 = -0.20*x+4.0;

塗りつぶすには area を使う.

figure
ar = area(x,[y1 y2-y1]);

% Appearances
set(ar(1),'FaceColor','None')
set(ar(2),'FaceColor',[0.0,0.2,1.0],'FaceAlpha',0.2);
grid on

ここで,

area(x,[y1 y2])

のようにすると,2本目の基準線が y1+y2 (累積和)の値になってしまうので,

area(x,[y1 y2-y1])

のように記述する必要がある.詳しくは area/MathWorks 参照.
ar(1).FaceColor を None にしないと, ar(1).BaseValue (デフォルトは0)から y1 までの範囲に色が付く.
ar(2).FaceColor は目的の着色範囲を示す.色や透過度はお好みで.
上記を実行すると,下のような図になる.

area0.jpg

この着色に中心線を引き,予測幅のように示す場合は

ymean = mean([y1 y2],2);

figure
h = plot(x,ymean); hold on
ar = area(x,[y1 y2-y1]);

% Appearances
set(h,'Color','r','LineWidth',1.0)
set(ar(1),'FaceColor','None','LineStyle','None')
set(ar(2),'FaceColor',[1.0,0.2,0.0],'FaceAlpha',0.2,'LineStyle','None');
grid on

% Legend
le = legend([h,ar(2)],{'Mean','Range'});
set(le,'FontName','Times','FontSize',14);
area1.jpg

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2019-06-13 (Thu) 13:32:06 (98d)