2010年1月27日水曜日

SyntaxHighlighter に貼り付けるコードのエスケープ

このブログでは SyntaxHighlighter を使ってソースコードを表示していますが,コードを<pre>タグの中に描くときに '<' や '>' などを&gt; &lt; などにエスケープする必要があります.

これを手でやると面倒なのでスクリプトを書いてみました.
http://maru.bonyari.jp/code2html/code2html.html
処理はブラウザの JavaScript で処理されるので prototype.js があれば
ローカルに保存しても使えます.

MATLAB で半透明の plot を作る

データが大量にあって,グラフ上で密度を表現したい場合などで
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
得られる結果はこんな感じ
このように,半透明の線を描くことができ,線が集中している部分は濃い色で表示されます.
ただし,複雑な線を大量にプロットするとすごく遅いので注意してください.