線と線の間の塗りつぶし

こんな図をつくりたい

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

line_and_area-crop.png

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

方法

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

Untitled
clear
close all
% 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 は目的の着色範囲を示す.色や透過度はお好みで.
このような着色に中心線を引くなら次の通り.
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)
塗りつぶした面の境界線をいじりたいときは,EdgeColor 等のプロパティを修正する.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2019-11-20 (Wed) 01:03:53 (308d)