2004-11-14
_ [Software] Graphvizで日本語グラフ表示
とあるどうでもよい事情でATTのGraphvizを使い日本語でグラフを書く必要が出てきた。オリジナルのはまだダメなようだが、WinGraphvizなんてのができていてマルチリンガルになっている。これはよさそうだと思ってダウンロードしてみたら実行形式は入っておらずライブラリのみ。VBScriptやPerlから使えるようになっているようだ。サンプルがVBScriptなのでしかたなく、「わかんねーよ」とかいいながらチョコチョコいじってファイルからdot形式を読んで、PNGでグラフを吐くスクリプトを作った。以下がそれ。
これをtest.vbsというファイル名でセーブし、graph.txtにDOT形式のグラフを用意して実行すればtest.PNGという絵が出来上がる。
'Create DOT Object Dim dot Set dot = CreateObject("Wingraphviz.dot") if dot is Nothing then Msgbox "Unable to load the object Wingraphviz.dot" end if 'Set Codepage to SJIS dot.Codepage = 932 'Read DOT file Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("graph.txt", 1) strCMD2 = f.ReadAll 'Check DOT Format if(not dot.Validate(strCMD2)) then msgbox "DOT Format Error" End if 'Generate BinaryImage(PNG) Dim Img Set Img = dot.ToPNG(strCMD2) if Img is Nothing then Msgbox "Unable to generate to PNG" end if Dim FilePath FilePath = "test.PNG" if Img.save(FilePath) then Msgbox "BinaryImage Type is " + Img.Type + vbcrlf + _ "Save Image at " + FilePath else Msgbox "Unable to save image at " + FilePath end if 'Release Resource Set Img = Nothing Set obj = Nothing
_ DOTファイルはSJISで書き、ラベルに日本語を書けばそれがそのまま表示される。他にもSVGを吐いてAdobeのSVGビューアと連携する使い方もあるらしいのだが、どうもうまくいかない。まあぼちぼちとやっていきますか。
READMEと日記の書き方
前に日本語の表示をさせたことがあります。<br>たしかGraphvizのソースファイルでフォントを参照している箇所を2,3変更しただけで、できましたよ。
そういう方法を紹介しているホームページも幾つかあったんだけど面倒なので止めました。WinGraphvizはPerlでdotを生成してグラフ表示するなどのアプリが簡単に作れるので良さそうです。