ruby-graphviz 入门

自从写了一个关于Graphviz 的教程 以来,我一直觉得它使用起来还不够方便。最近终于找到Graphviz 的Ruby 扩展了——ruby-graphviz

首先你得安装Graphviz ,记得装在默认目录下,不然ruby-graphviz 找不到(我还不知道怎么设置PATH,请指教)。

然后,gem 一下:

 

接下来将见证神奇的一刻。

 

Run 一下,你会在源文件所在目录下发现一个hello_world.png 文件。hello world

老规矩,下面来解释一下。

可以用new 创建一个graph 对象。new 的时候有这么几个选项:

  • :output : Output format (Constants::FORMATS) (default : dot)
  • :file : Output file name (default : none)
  • :use : Program to use (Constants::PROGRAMS) (default : dot)
  • :path : Program PATH
  • :parent : Parent graph (default : none)
  • :type : Graph type (Constants::GRAPHTYPE) (default : digraph)

用output (有个别名save)生成图像。同样,output 也有几个可选项:

  • :output : Output format (Constants::FORMATS)
  • :file : Output file name
  • :use : Program to use (Constants::PROGRAMS)
  • :path : Program PATH

用add_node 来加点。可以像这样来设置属性:

 

这样,n 将会是一个用<.7, .3, 1.0> 填充的box。

用node_count 来对点计数。

用[]= 来设置属性值:

 

用add_edge 加边。

用edge_count 来对边计数。

也可以像点那样设置属性:

 

这样,e 将成为一条带红色标注“an edge” 的蓝线。

Record Nodes

记录是一个盒子,被分割成横的或竖的格子。格子之前可以加标记,只需把标记放在尖括号<> 之间。横格子之间用竖杠| 隔开,竖格子就是外加一对大括号{}。看下面的例子:

structs

 

再来看一个复杂一点的例子:

一个复杂一点的例子

 

子图

代码说明一切(注意add_graph):

subgraph

高级技巧

同一个图的三种不同写法:

Rubyist 更喜欢的风格:

Ruby geek 的写法:

 

同一个例子

小结

ruby-graphviz 和graphviz 的原生DOT 文件之间存在一一对应的关系。一个典型的graphviz DOT 文件有三个主要部分:

  1. 数据头,用来设置点、边、图的属性
  2. 点定义
  3. 边定义

所以ruby-graphviz 文件也是由这三部分组成。我们用一个对比例子来结束本教程。

这个graphviz 例子来自Mark A. McBride

 

我用Ruby 改写了这个例子:

 

final sample

要想了解更多,请看官方文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值