トップ «前の日記(2004-11-13) 最新 次の日記(2004-11-15)» 編集

豊田正史のSLとは関係ございません


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ビューアと連携する使い方もあるらしいのだが、どうもうまくいかない。まあぼちぼちとやっていきますか。

本日のツッコミ(全2件) [ツッコミを入れる]
_ しんごー (2004-11-15 13:49)

前に日本語の表示をさせたことがあります。<br>たしかGraphvizのソースファイルでフォントを参照している箇所を2,3変更しただけで、できましたよ。

_ とよだ (2004-11-15 17:05)

そういう方法を紹介しているホームページも幾つかあったんだけど面倒なので止めました。WinGraphvizはPerlでdotを生成してグラフ表示するなどのアプリが簡単に作れるので良さそうです。


README日記の書き方