Permalink
Browse files

Update README

  • Loading branch information...
glejeune committed Jul 3, 2012
1 parent fc581d0 commit ae737b024a87a25ddd474a07ebebb0c5545486eb
Showing with 110 additions and 93 deletions.
  1. +110 −93 README.rdoc
View
@@ -18,142 +18,159 @@ Interface to the GraphViz graphing tool
A basic example
- require 'graphviz'
+```ruby
+require 'graphviz'
- # Create a new graph
- g = GraphViz.new( :G, :type => :digraph )
+# Create a new graph
+g = GraphViz.new( :G, :type => :digraph )
- # Create two nodes
- hello = g.add_nodes( "Hello" )
- world = g.add_nodes( "World" )
+# Create two nodes
+hello = g.add_nodes( "Hello" )
+world = g.add_nodes( "World" )
- # Create an edge between the two nodes
- g.add_edges( hello, world )
+# Create an edge between the two nodes
+g.add_edges( hello, world )
- # Generate output image
- g.output( :png => "hello_world.png" )
+# Generate output image
+g.output( :png => "hello_world.png" )
+```
The same but with a block
- require 'graphviz'
+```ruby
+require 'graphviz'
- GraphViz::new( :G, :type => :digraph ) { |g|
- g.world( :label => "World" ) << g.hello( :label => "Hello" )
- }.output( :png => "hello_world.png" )
+GraphViz::new( :G, :type => :digraph ) { |g|
+ g.world( :label => "World" ) << g.hello( :label => "Hello" )
+}.output( :png => "hello_world.png" )
-Or with the DSL
+ with the DSL
- require 'graphviz/dsl'
- digraph :G do
- world[:label => "World"] << hello[:label => "Hello"]
+require 'graphviz/dsl'
+digraph :G do
+ world[:label => "World"] << hello[:label => "Hello"]
- output :png => "hello_world.png"
- end
+ output :png => "hello_world.png"
+end
+```
Create a graph from a file
- require 'graphviz'
+```ruby
+require 'graphviz'
- # In this example, hello.dot is :
- # digraph G {Hello->World;}
+# In this example, hello.dot is :
+# digraph G {Hello->World;}
- GraphViz.parse( "hello.dot", :path => "/usr/local/bin" ) { |g|
- g.get_node("Hello") { |n|
- n[:label] = "Bonjour"
- }
- g.get_node("World") { |n|
- n[:label] = "Le Monde"
- }
- }.output(:png => "sample.png")
+GraphViz.parse( "hello.dot", :path => "/usr/local/bin" ) { |g|
+ g.get_node("Hello") { |n|
+ n[:label] = "Bonjour"
+ }
+ g.get_node("World") { |n|
+ n[:label] = "Le Monde"
+ }
+}.output(:png => "sample.png")
+```
GraphML[http://graphml.graphdrawing.org/] support
- require 'graphviz/graphml'
-
- g = GraphViz::GraphML.new( "graphml/cluster.graphml" )
- g.graph.output( :path => "/usr/local/bin", :png => "#{$0}.png" )
+```ruby
+require 'graphviz/graphml'
+g = GraphViz::GraphML.new( "graphml/cluster.graphml" )
+g.graph.output( :path => "/usr/local/bin", :png => "#{$0}.png" )
+```
== TOOLS
Ruby/GraphViz also includes :
* <tt>ruby2gv</tt>, a simple tool that allows you to create a dependency graph from a ruby script. Example : http://drp.ly/dShaZ
- ruby2gv -Tpng -oruby2gv.png ruby2gv
+```
+ruby2gv -Tpng -oruby2gv.png ruby2gv
+```
* <tt>gem2gv</tt>, a tool that allows you to create a dependency graph between gems. Example : http://drp.ly/dSj9Y
- gem2gv -Tpng -oruby-graphviz.png ruby-graphviz
+```
+gem2gv -Tpng -oruby-graphviz.png ruby-graphviz
+```
* <tt>dot2ruby</tt>, a tool that allows you to create a ruby script from a graphviz script
- $ cat hello.dot
- digraph G {Hello->World;}
-
- $ dot2ruby hello.dot
- # This code was generated by dot2ruby.g
-
- require 'rubygems'
- require 'graphviz'
- graph_g = GraphViz.digraph( "G" ) { |graph_g|
- graph_g[:bb] = '0,0,70,108'
- node_hello = graph_g.add_nodes( "Hello", :height => '0.5', :label => '\N', :pos => '35,90', :width => '0.88889' )
- graph_g.add_edges( "Hello", "World", :pos => 'e,35,36.413 35,71.831 35,64.131 35,54.974 35,46.417' )
- node_world = graph_g.add_nodes( "World", :height => '0.5', :label => '\N', :pos => '35,18', :width => '0.97222' )
- }
- puts graph_g.output( :canon => String )
+```
+$ cat hello.dot
+digraph G {Hello->World;}
+
+$ dot2ruby hello.dot
+# This code was generated by dot2ruby.g
+
+require 'rubygems'
+require 'graphviz'
+graph_g = GraphViz.digraph( "G" ) { |graph_g|
+ graph_g[:bb] = '0,0,70,108'
+ node_hello = graph_g.add_nodes( "Hello", :height => '0.5', :label => '\N', :pos => '35,90', :width => '0.88889' )
+ graph_g.add_edges( "Hello", "World", :pos => 'e,35,36.413 35,71.831 35,64.131 35,54.974 35,46.417' )
+ node_world = graph_g.add_nodes( "World", :height => '0.5', :label => '\N', :pos => '35,18', :width => '0.97222' )
+}
+puts graph_g.output( :canon => String )
+```
* <tt>git2gv</tt>, a tool that allows you to show your git commits : http://dl.dropbox.com/u/72629/ruby-graphviz-git.svg
* <tt>xml2gv</tt>, a tool that allows you to show a xml file as graph.
== GRAPH THEORY
- require 'graphviz'
- require 'graphviz/theory'
-
- g = GraphViz.new( :G ) { ... }
-
- t = GraphViz::Theory.new( g )
-
- puts "Adjancy matrix : "
- puts t.adjancy_matrix
-
- puts "Symmetric ? #{t.symmetric?}"
-
- puts "Incidence matrix :"
- puts t.incidence_matrix
-
- g.each_node do |name, node|
- puts "Degree of node `#{name}' = #{t.degree(node)}"
- end
-
- puts "Laplacian matrix :"
- puts t.laplacian_matrix
-
- puts "Dijkstra between a and f"
- r = t.moore_dijkstra(g.a, g.f)
- if r.nil?
- puts "No way !"
- else
- print "\tPath : "; p r[:path]
- puts "\tDistance : #{r[:distance]}"
- end
-
- print "Ranges : "
- rr = t.range
- p rr
- puts "Your graph contains circuits" if rr.include?(nil)
-
- puts "Critical path : "
- rrr = t.critical_path
- print "\tPath "; p rrr[:path]
- puts "\tDistance : #{rrr[:distance]}"
+```ruby
+require 'graphviz'
+require 'graphviz/theory'
+
+g = GraphViz.new( :G ) { ... }
+
+t = GraphViz::Theory.new( g )
+
+puts "Adjancy matrix : "
+puts t.adjancy_matrix
+
+puts "Symmetric ? #{t.symmetric?}"
+
+puts "Incidence matrix :"
+puts t.incidence_matrix
+
+g.each_node do |name, node|
+ puts "Degree of node `#{name}' = #{t.degree(node)}"
+end
+
+puts "Laplacian matrix :"
+puts t.laplacian_matrix
+
+puts "Dijkstra between a and f"
+r = t.moore_dijkstra(g.a, g.f)
+if r.nil?
+ puts "No way !"
+else
+ print "\tPath : "; p r[:path]
+ puts "\tDistance : #{r[:distance]}"
+end
+
+print "Ranges : "
+rr = t.range
+p rr
+puts "Your graph contains circuits" if rr.include?(nil)
+
+puts "Critical path : "
+rrr = t.critical_path
+print "\tPath "; p rrr[:path]
+puts "\tDistance : #{rrr[:distance]}"
+```
== INSTALLATION
- sudo gem install ruby-graphviz
+```
+sudo gem install ruby-graphviz
+```
You also need to install GraphViz[http://www.graphviz.org]

0 comments on commit ae737b0

Please sign in to comment.