`

我使用过的Linux命令之twopi - 用于放射状图形的生成

 
阅读更多

我使用过的Linux命令之twopi - 用于放射状图形的生成

本文链接:http://codingstandards.iteye.com/blog/1121666   (转载请注明出处)

用途说明

    twopi命令可用于绘制DOT语言脚本描述的图形,它生成放射状的图形(filter for radial layouts of graphs)。twopi是DOT图形描述语言工具包Graphviz的其中一个,本系列的“我使用过的Linux命令之dot - 绘制DOT语言脚本描述的图形 ”讨论过dot命令。下面是维基百科关于Graphviz的说明:

http://zh.wikipedia.org/wiki/Graphviz 写道
Graphviz由一种被称为DOT语言的图形描述语言[3] 与一组可以生成和/或处理DOT文件的工具组成:

dot
一个用来将生成的图形转换成多种输出格式的命令行工具。其输出格式包括PostScript,PDF,SVG,PNG,含注解的文本等等。

neato
用于sprint model的生成(在Mac OS版本中称为energy minimized)。

twopi
用于放射状图形的生成

circo
用于圆形图形的生成。

fdp
另一个用于生成无向图的工具。

dotty
一个用于可视化与修改图形的图形用户界面程序。

lefty
一个可编程的(使用一种被EZ影响的语言[4])控件,它可以显示DOT图形,并允许用户用鼠标在图上执行操作。Lefty可以作为MVC模型的使用图形的GUI程序中的视图部分。
 

常用参数

twopi命令的输入内容必须是UTF-8编码的,所以可能需要把输入文件转换成UTF-8的,下面简单介绍下iconv编码转换工具的使用。

可以参看本系列中的“我使用过的Linux命令之iconv - 字符编码转换工具 ”。

 

格式:iconv -f <source_encoding> -t <dest_encoding> <text_file>

将<text_file>指定的文本文件,由<source_encoding>编码方式转换为<dest_encoding>编码方式。

输出将显示在标准输出上,可以使用重定向保存到另外的文件中。

 

格式:iconv -f <source_encoding> -t <dest_encoding> <text_file> -o <output_file>

与上面大体相似,增加了-o <output_file>部分,将转换结果直接保存在<output_file>指定的文件中。

 

格式:twopi -T<output_format> <gv_file> -o<output_file>

将<gv_file>指定的DOT源文件,生成<output_format>格式的放射状图形,保存到<output_file>指定的文件中。

 

使用示例

示例一 用于生成表间关系的图形

[root@jfht ~]# cat ehr_object.gv
graph G {
        ranksep = 3;
        "员工\nehr_staff_info" -- "民族\nehr_nation_info" [ taillabel = "n", label = "nation_id", headlabel = "1" ];
        "员工\nehr_staff_info" -- "血型\nehr_blood_type" [ taillabel = "n", label = "blood_type", headlabel = "1" ];
        "员工\nehr_staff_info" -- "婚姻状况\nehr_marital_status" [ taillabel = "n", label = "marital_status", headlabel = "1" ];
        "员工\nehr_staff_info" -- "健康状况\nehr_health_state" [ taillabel = "n", label = "health_state", headlabel = "1" ];
        "员工\nehr_staff_info" -- "地区信息\nehr_region_info" [ taillabel = "n", label = "home_region", headlabel = "1" ];
        "员工\nehr_staff_info" -- "地区信息\nehr_region_info" [ taillabel = "n", label = "\nwork_region", headlabel = "1" ];
        "履历\nehr_career_info" -- "员工\nehr_staff_info" [ taillabel = "n", label = "staff_id", headlabel = "1" ];
}

[root@jfht ~]# iconv -f gbk -t utf8 ehr_object.gv >ehr_object_utf8.gv; twopi -Tgif ehr_object_utf8.gv -oehr_object.gif
[root@jfht ~]# file ehr_object*
ehr_object.gif:     GIF image data, version 89a, 762 x 665
ehr_object.gv:      ISO-8859 text
ehr_object_utf8.gv: UTF-8 Unicode text
[root@jfht ~]#

 

一个用twopi绘制的放射状图形,它展示了几张数据表之间的关系

 

示例二 没有了

更多示例查看相关资料啦。

 

问题思考

相关资料

【1】维基百科 Graphviz

http://zh.wikipedia.org/wiki/Graphviz

【2】一直等你 使用 graphviz 形象化有向图
http://hi.baidu.com/einyboy/blog/item/148bd68ed9ec6be6f11f367c.html
【3】横行青海夜带刀 用graphviz画图
http://abruzzi.iteye.com/blog/433278

 

返回 我使用过的Linux命令系列总目录

 

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics