Graphviz
不能显示中文,我的处理方法是:
node [shape = box,fontname =“Microsoft YaHei”]
edge [fontname =“Microsoft YaHei”]
似乎是只有windows下才需要这样做。另一种方法:
在C:\Program Files\Graphviz 2.21\etc\fonts\fonts.conf,找到以下这行:
<dir> #FONTDIR#</ dir>
改成Windows 字型档的路径:
<dir> C:WINDOWS字体</ dir>
Graphviz 就可以使用中文了!但注意目前似乎只能输入英文的字型名称。
来自http://wiki.woodpecker.org.cn/moin/GraphViz
快速开始
安装
不用说了!几乎是绿色软件了!
M$平台中解压缩就好,
而且自动加了系统路径
使用
嗯嗯!最愉快的经历!运行快!语法简练!听话!
关键是脚本语言的行为哪!你可以随时输出图形结果来预览成果!
编写dot脚本
没有什么可说的,帮助文件比较玄!syntax 好复杂的样子!
但是看例子实在就简单了!
/*sample.dot*/
digraph G {
PY-> ZO-> Zope2-> CMF-> Plone;
ZO-> Zope3;
ZO-> ZS;
ZS [标签= “ZODB,ZPT \ n ....”];
PY-> XML;
PY - > “的4Suite” - > XML; PY->元素- > XML;
PY [标签= “Python的”,形状=盒];
ZO [标签= “Zope的”,形状=蛋];
}
运行绘制
以上脚本使用最基本的命令输出:
> dot -Tpng sample.dot -o sample.png
sample.png
嗬嗬嗬!简单明了:
digraph G {} 是脚本声明
/*....*/ 是注释形式
a->b 关系指向
另外有种无方向图形,使用a--b 连接图元
foo[label=...] 是属性定义语法,可以在末尾集中声明,也可以随时在关系说明中定义
label 标签属性中可以使用标准的转义符来换行等等
shape 图元形状属性,可以指点外框形式!
有很多的选择啦……结点形状
箭头形状
颜色定义,当然也可以使用RGB来声明
全部属性定义
而且通过命令行的简单变化又可以快速改变整个图形的外观
> dot -Grankdir=LR -Nshape="plaintext" -Earrowhead="odiamond" -Tpng sample.dot -o sample.png
sample0.png
而各种命令行参数是与脚本的属性声明是共通的,不过是全局性的定义…………
换行
label的文字内容如果太长的话,可以用"\n"来换行。
进一步学习
哇呀呀!直接支持HTML的表格定义语法!看来HTML的影响力很NB哪!
digraph table {
node [shape=plaintext];
struct1 [label=<<TABLE BORDER="1">
<TR>
<TD >a</TD>
<TD BGCOLOR="yellow">b</TD>
<TD HEIGHT="40" WIDTH="90" ALIGN="right">c</TD>
<TD VALIGN="bottom">d</TD>
</TR>
</TABLE>>];
}
将输出为
tab.png
深入.dot
中文输出
可恨不支持中文?!
ZoomQuiet: 支持中文的,不过要在dot文件中输入utf-8编码的汉字,生成图片时也要指定字体名称。比如:
> dot -Nfontname=simsun -Tpng sample.dot -o sample.png
win2003(win2k)下指定字体扩展名(当然也可以用别的字体):
> dot -Nfontname=simsun.ttc -Tpng sample.dot -o sample.png
原来如比!!不过,只能在命令行处指定,在脚本中使用类似:
node [fontsize=8, fontname=simhei,shape = plaintext]
来限定时,不能!!!这样一来,不同部分使用不同字体就是问题了…………
提供C的源代码,可是…………想起C就烦!
sample.dot
/*sample.dot*/
digraph G {
PY->ZO->Zope2->CMF->Plone;
ZO->Zope3;
ZO->Zs;
Zs[label="ZODB,ZPT(等)\n...."];
PY->XML;
PY->"4Suite"->XML;PY->Elements->XML;
PY[label="Python语言",shape=box];
ZO[label="Zope",shape=egg];
}
sample.png
FreeBSD 中
不同与Linux中,中文支持只需字体!其它的 graphviz 自身安装好了!
# cd /usr/ports/
(FreeBSD6.0以后使用portsnap 快捷升级产品树)
# portsnap update
# cd /usr/ports/graphics/graphviz
# make install clean
(然后安装字体)
# cd /usr/ports/chinese/fireflyttf
# make install clean
# cd /usr/ports/chinese/arphicttf
# make install clean
即可输出中文在图片中! 注意先后安装顺序! TureType 字体的使用需要一些库的支持,graphviz有自动安装的
不过 windows 中死活不行!BS的都没力气了…………
自由字体不多:Debian组织的中文字体
其它TTF的D用
FreeBSD 中 dot 找不到字体的信息如下:
Error: Could not find/open font : simkai in
/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/
truetype:/usr/X11R6/lib/X11/fonts/TTF:/usr/share/fonts/True
Type:/usr/share/fonts/truetype:/usr/openwin/lib/X11/fonts/T
rueType:/usr/X11R6/lib/X11/fonts/Type1:/usr/common/share/fonts/ttf
实际的目录内容是:
#ll /usr/X11R6/lib/X11/fonts/TrueType/
lrwxr-xr-x 1 root wheel 44 Feb 13 18:48 bkai00mp.ttf@ -> /usr/local/share/fonts/TrueType/bkai00mp.ttf
lrwxr-xr-x 1 root wheel 44 Feb 13 18:48 bsmi00lp.ttf@ -> /usr/local/share/fonts/TrueType/bsmi00lp.ttf
lrwxr-xr-x 1 root wheel 47 Feb 13 18:17 fireflysung.ttf@ -> /usr/local/share/fonts/TrueType/fireflysung.ttf
-rw-r--r-- 1 root wheel 789508 Feb 13 18:48 fonts.alias
-rw-r--r-- 1 root wheel 21858 Feb 13 18:48 fonts.cache-1
-rw-r--r-- 1 root wheel 467 Feb 13 18:48 fonts.dir
-rw-r--r-- 1 root wheel 467 Feb 13 18:48 fonts.scale
lrwxr-xr-x 1 root wheel 44 Feb 13 18:48 gbsn00lp.ttf@ -> /usr/local/share/fonts/TrueType/gbsn00lp.ttf
lrwxr-xr-x 1 root wheel 44 Feb 13 18:48 gkai00mp.ttf@ -> /usr/local/share/fonts/TrueType/gkai00mp.ttf
所以,可以直接链接M$ 中的字体到系统目录中:
比如说
# ln -s /home/zoomq/.fonts/simsun.ttf /usr/X11R6/lib/X11/fonts/TrueType/simsun.ttf
就可以使用 simsun 来输出了!
当然的,不提倡!
M$中的另种解决
tech.cap::我在一望无际的路上分享
digraph G {
graph [
ratio="auto"
label="hello ,我的测试"
labelloc=t
fontname="simyou.ttf"
];
node [
shape="box",
style="dotted",
fontname="simyou.ttf",
fontsize="10"
];
edge [ fontname="simyou.ttf"];
"张三"
[
peripheries=2,
style=filled,
label="市民张三"
color="#eecc80"
];
"李四"[
style=filled,
label="农民李四"
color="#eecc80"
];
"王五"[
style=filled,
label="农民王五"
color="#eecc80"
];
"张三"->"李四"[label="亲戚"];
"张三"->"王五"[label="朋友"];
"李四"->"王五"[label="不认识"];
}
http://www.blogjava.net/images/blogjava_net/cap/2217/o_cap.jpg
自动工具
不过 limodou 在Meteor中提供了一个想法
模板关系图
哈哈哈!可以让Python 自动的分析代码生成 dot 脚本通过 GraphViz 工具生产结构示意图!
dotScript -- dot化脚本结构!
理解脚本函式调用情况;
理解脚本类引用,继承情况;
理解不同语言脚本的情况;
讨论
有更加美好的体验的话请一定分享!
不错,有机会完善之,搞一个中文化教程,可以做更复杂的图形。
关于脚本类引用,已经有现成的模块我以前的Blog中有介绍,[http://www.zipcon.net/~adamf/software/PyUMLGraph/ PyUMLGraph]。不过它会把所有的基类都列出来,有时会非常庞大。还有另一个不用graphviz的是PyNSource,可以看,可以打印,但不能保存。 -- limodou
Graphviz的更多相关文章
- 开启基本数据结构和算法之路--初识Graphviz
在我的Linux刀耕开荒阶段,就想开始重拾C,利用C实现常用的基本数据结构和算法,而数据结构和算法的掌握的熟练程度正是程序的初学者与职业程序员的分水岭. 那么怎么开启这一段历程呢? 按照软件工程的思想 ...
- Graphviz绘制百家争鸣图
最近读易中天<先秦诸子百家>,一边读一边在纸上画出逻辑关系,图越来越复杂,趁中午休息索性就把图用Graphviz重新绘制了一下;由于Graphviz主动承担了绘图排版的职责,我只需要关注内 ...
- 使用 Graphviz 画拓扑图
使用 Graphviz 画拓扑图 0)前述 本文着重讲一下 Graphviz 的风格控制,基础一些的就不在这里讲啦. graphviz 的主页是http://www.graphviz.org/. Gr ...
- PHP - xhprof+Graphviz 安装配置
简介:XHProf是Facebook放出的轻量级调试工具.和Xdebug相比,XHProf更加易用和可控,尤其是生成流程图和调试数据对比的功能很好很强大. 参考:http://us2.php.net/ ...
- Graphviz从入门到不精通
1.安装Graphviz (windows 版本,后面说linux下的安装) 1.1)下载安装文件 从graphviz官网下载 http://www.graphviz.org/Download.php ...
- 用 Graphviz+pvtrace 可视化函数调用
最近在想怎么把一个程序的函数调用关系快速的用流程图的方式画出来,之后看到了这个一篇文章“用 Graphviz 可视化函数调用”(http://www.ibm.com/developerworks/cn ...
- InvocationException: GraphViz's executables not found
当我在visualize决策树,运行以下代码时,报错: InvocationException: GraphViz's executables not found import pydotplus f ...
- 使用Graphviz绘图(一)
前言 日常开发或者编写课程论文时,除了代码文档的编写,其中一个很重要的部分就是需要绘制流程图.示意图 绘制流程图有很多工具,一般常见的就有如下几种: Word.PPT等办公软件 Viso以及开源的Di ...
- 看开源代码利器—用Graphviz + CodeViz生成C/C++函数调用图(call graph)
一.Graphviz + CodeViz简单介绍 CodeViz是<Understanding The Linux Virtual Memory Manager>的作者 Mel Gorma ...
- 用doxygen+graphviz自动化生成代码文档(附详细教程)
一.引子 用这两个工具可以自动的遍历代码,并且产生代码文档,我们先来看看效果,然后放出这两个工具的下载地址. 二.工具的下载地址 doxygen:http://www.stack.nl/~dimitr ...
随机推荐
- J - Vertical Histogram(1.5.7)
J - Vertical Histogram(1.5.7) Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d &am ...
- Latest China Scam: I've Been Arrested in the Brothel Crackdown!
Latest China Scam: I've Been Arrested in the Brothel Crackdown! If the sex industry is fastest to se ...
- AIX装机问题123
好久没有实施,好记性不如好笔记,那就记录下吧 1文件系统创建挂载 通过smit工具很容易简单举例创建一个jfs2类型文件系统并挂载 创建lv smit mklv 创建jfs2类型文件系统 指定lv s ...
- css学习_标签的显示模式
标签的显示模式 a.块级元素(最典型的是 div标签) 特点: 默认宽度 100% 可以容纳块级元素和内联元素 b.行内元素 (最典型的是 span标签) 特点: c.行内块元素(最典型的是 i ...
- 网络层block,delegate之优劣分析
正常情况下, block 缺点: 1.block很难追踪,难以维护 2.block会延长先关对象的生命周期 block会给内部所有的对象引用计数+1, 一方面会带来潜在的循环引用(retain cyc ...
- mysql设置指定ip访问,用户权限相关操作
基础语法GRANT priv_type ON database.table TO user[IDENTIFIED BY [PASSWORD] 'password'] [,user [IDENTIFIE ...
- 查找->静态查找表->分块查找(索引顺序表)
文字描述 分块查找又称为索引顺序查找,是顺序查找的一种改进方法.在此查找算法中,除表本身外, 还需要建立一个”索引表”.索引表中包括两项内容:关键字项(其值为该字表内的最大关键字)和指针项(指示该子表 ...
- kafka后台启动的命令
kafka如果直接启动会出现问题,就是信息会打印在控制台,就会出现在控制台. 然后关闭窗口,kafka随之关闭,然后启动以下的命令就可以实现. ./kafka-server-start.sh ../c ...
- ATL Thunk机制深入分析
如果你有SDK的编程经验,就一定应该知道在创建窗口时需要指定窗口类,窗口类中的一种重要的参数就是窗口过程.任何窗口接收到的消息,都是由该窗口过程来处理. 在面向对象编程中,如果还需要开发人员来使用原始 ...
- redis安装详解
一.redis安装步骤: 1.首先上官网下载Redis 压缩包,地址:http://redis.io/download 下载稳定版3.0.7即可.2.通过远程管理工具,将压缩包拷贝到Linux服务器中 ...