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得られる結果はこんな感じ
このように,半透明の線を描くことができ,線が集中している部分は濃い色で表示されます.
ただし,複雑な線を大量にプロットするとすごく遅いので注意してください.
0 件のコメント:
コメントを投稿