dot2ruby
ruby-graphviz とは、 Ruby から Grapviz を簡単に扱えるようにするソフトウェア
dot2ruby は, dot ファイルを Ruby に変換するプログラム.ruby-graphviz に付属している.
前準備
◆ Ubuntu での実行手順の例
sudo apt -y update
sudo apt -y install ruby-full
sudo apt -y install ruby1.9.1-dev
sudo gem install ruby-graphviz
使ってみる
- dot ファイルのサンプル
有向グラフを記述した dot ファイルの例.ノードの位置 (x, y 座標値)を指定している.
digraph G { A -> B; B -> C; C -> D; D -> B; A [label=A, pos="0,0!", pin=TRUE]; B [label=B, pos="10,10!", pin=TRUE]; C [label=C, pos="1,8!", pin=TRUE]; D [label=D, pos="9,3!", pin=TRUE]; }
- dot ファイルの確認のため、試しに描画してみる
dot -K fdp -T png a.dot -o a.png
◇ 画像ビューワを使って a.png を表示
- dot2ruby の実行
◆ 実行手順例
dot2ruby a.dot > a.rb
- できた ruby ファイルの確認
# This code was generated by dot2ruby.g require 'rubygems' require 'graphviz' graph_g = GraphViz.digraph( "G" ) { |graph_g| node_a = graph_g.add_nodes( "A", :label => 'A', :pin => 'TRUE', :pos => '0,0!' ) graph_g.add_edges( "A", "B" ) node_b = graph_g.add_nodes( "B", :label => 'B', :pin => 'TRUE', :pos => '10,10!' ) graph_g.add_edges( "B", "C" ) node_c = graph_g.add_nodes( "C", :label => 'C', :pin => 'TRUE', :pos => '1,8!' ) graph_g.add_edges( "C", "D" ) node_d = graph_g.add_nodes( "D", :label => 'D', :pin => 'TRUE', :pos => '9,3!' ) graph_g.add_edges( "D", "B" ) }
- Ruby 処理系で処理してみる
irb を起動して,先ほどできた Ruby ファイルをコピー&ペースト
- dot ファイルへの変換
puts graph_g.output()
- 描画
fdp のところには、cairo, neato などを指定できる
graph_g.output( :png => "a.png", :use => "fdp" )
できた画像を画像ビューワで表示