金子邦彦研究室プログラミングRuby による Web/データベース・プログラミングRuby で ruby-graphviz を使ってみる

Ruby で ruby-graphviz を使ってみる

ruby-graphviz とは、 Ruby から Grapviz を簡単に扱えるようにするソフトウェア

前準備

Ubuntu での実行手順の例

sudo apt -y update
sudo apt -y install ruby-full
sudo apt -y install ruby1.9.1-dev
sudo gem install ruby-graphviz

※ Graphviz のインストールも済ませておくこと

実行

require "ruby-graphviz"

gv = GraphViz.new( :G, :type => :digraph )

s = gv.add_nodes( "s" )
p = gv.add_nodes( "p" )
q = gv.add_nodes( "q" )
r = gv.add_nodes( "r" )

gv.add_edges( s, p )
gv.add_edges( s, q )
gv.add_edges( p, p )
gv.add_edges( p, r )
gv.add_edges( q, p )
gv.add_edges( q, r )
gv.add_edges( r, s )

gv.output( :png => "sample1.png" ) 

実行結果例

[image]

グラフ演算の例

require "ruby-graphviz"
require "graphviz/theory" 

gv = GraphViz.new( :G, :type => :digraph )

s = gv.add_nodes( "s" )
p = gv.add_nodes( "p" )
q = gv.add_nodes( "q" )
r = gv.add_nodes( "r" )

gv.add_edges( s, p )
gv.add_edges( s, q )
gv.add_edges( p, p )
gv.add_edges( p, r )
gv.add_edges( q, p )
gv.add_edges( q, r )
gv.add_edges( r, s )


t = GraphViz::Theory.new( gv )

puts t.adjancy_matrix
puts t.incidence_matrix

実行結果例

[image]