データが大量にあって,グラフ上で密度を表現したい場合などで
MATLAB で半透明の線を書きたいことがたまにあります.
なぜかMATLABのplotで生成される線は半透明をサポートしていないので
半透明をサポートしているpatchで線を描く関数を作ってみました.
function [ p ] = pplot(x,y,z)
%PPLOT Draw line as patch
if nargin==2
z=0;
end
x=reshape(x,[],1);
y=reshape(y,[],1);
p=patch([x;flipud(x)],[y;flipud(y)],z*ones(2*size(x,1),1),'b');
end
使うときは以下のように使います.
x=0:1e-2:pi/2;
clf
hold on
for k=linspace(0,1,25)
p=pplot(x,(1-k)*sin(x));
set(p,'EdgeAlpha',0.1);
set(p,'EdgeColor','b');
set(p,'LineWidth',2);
p=pplot(x,k*cos(x));
set(p,'EdgeAlpha',0.1);
set(p,'EdgeColor','r');
set(p,'LineWidth',2);
end
得られる結果はこんな感じ

このように,半透明の線を描くことができ,線が集中している部分は濃い色で表示されます.
ただし,複雑な線を大量にプロットするとすごく遅いので注意してください.