Gviz 使用例

require 'bundler/setup'
require 'gviz'

g = {1=>[3], 2=>[4], 3=>[4, 5], 4=>[6], 5=>[6], 6=>[7, 11],
     7=>[8], 8=>[13], 9=>[10], 10=>[11], 11=>[12], 12=>[13],
     13=>[14]}

gv = Gviz.new
gv.graph do
  global rankdir: 'LR'
  g.each {|k, v| route k => v}
end

gv.save(:graph, :png)

 
 

その2

require 'bundler/setup'
require 'gviz'

g = {s: {t: 2, x: 6}, t: {x: 7, y: 4},
       x: {y: -1, z: 1}, y: {z: -2}}
h = g.map {|x| [x[0], x[1].keys]}.to_h

gv = Gviz.new
gv.graph do
  global rankdir: 'LR'
  h.each do |k, v|
    route k => v
    v.each {|v1| edge [k, v1] * '_', label: g[k][v1].to_s}
  end
end

gv.save(:graph, :png)

 
 

その3

require 'bundler/setup'
require 'gviz'

g = {s: {t: 6, y: 4}, t: {x: 3, y: 2},
     x: {z: 4}, y: {z: 3, t: 1, x: 9}, z: {s: 7, x: 5}}
h = g.map {|x| [x[0], x[1].keys]}.to_h

gv = Gviz.new
gv.graph do
  global rankdir: 'LR'
  h.each do |k, v|
    route k => v
    v.each {|v1| edge [k, v1] * '_', label: g[k][v1].to_s}
  end
end

gv.save(:graph, :png)

 
 

その4

require 'bundler/setup'
require 'gviz'

g = {s: {t: 6, y: 7}, t: {x: 5, y: 8, z: -4},
       x: {t: -2}, y: {z: 9, x: -3}, z: {s: 2, x: 7}}
h = g.map {|x| [x[0], x[1].keys]}.to_h

gv = Gviz.new
gv.graph do
  global rankdir: 'LR'
  h.each do |k, v|
    route k => v
    v.each {|v1| edge [k, v1] * '_', label: g[k][v1].to_s}
  end
end

gv.save(:graph, :png)

 

※参考
Yet Another Ruby Graphviz Interfaceを作ったからみんなで大量のグラフを作って遊ぼうよ!
http://www.graphviz.org/content/attrs