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