利用Graphviz画出图

graphviz官网:http://www.graphviz.org/

背景:有画图需要,之前见到别人用graphviz画,画出来的图漂亮,且自动帮你排版安排布局,所以自己想尝试用它画。

其中遇到的几个问题

  1. win系统下载msi安装包后进行安装,安装不成功,报错信息是win电脑却少什么包,最后转向Mac画图。
  2. 找到两个graphviz online的网站(http://www.webgraphviz.com/  和),都不太好用,不是对中文支持不好,就是稍微复杂一些的图他就画不出来了。
  3. Mac 的安装了graphviz,但是你要先保存.dot文件,编码方式选为utf-8,再用Graphviz打开,就可以支持中文。
  4. 对于如何调字体颜色,大小,形状,标签等,参考官网帮助页面都可以搞定。

为什么用这个工具画图?

  1. 自动帮你排版
  2. 如果图要改动,后续维护简单
  3. 画出来的图好看,逼格高

最后放一张自己画的图

画图用的代码:

digraph ER {
        //size = "9, 15";//图片大小
        //fontsize=22
        compound=true;
        node [shape=ellipse,fontname=微软雅黑,labelfontsize=9,fontsize=28]; u89; c1;
         node [shape=box,style=filled,color=palegreen1]; a45;y78;h8;
         node [shape=diamond,style=filled,color=grey92];"b1";"p9";
        fontsize=25
        a [shape=diamond,style=filled,color=lgrey92,label="a1"];
        b [shape=diamond,style=filled,color=grey92,label="a2"];

        c [shape=diamond,style=filled,color=grey92,label="a3"];
        d [shape=diamond,style=filled,color=grey92,label="a4"];
        u89 -> a45;
        a45 -> "b1"[label="",len=1.00];

        "b1" -> a [label="是",len=1.00,fontname=微软雅黑,fontsize=25];
        "b1" -> b [label="否",len=1.00,fontname=微软雅黑,fontsize=25];
        subgraph cluster_0 {
        style=filled;
        color=bisque;
        label = "b2";
        fontname=微软雅黑
        node [shape=diamond,style=filled,color=grey92];"p9";
        a [shape=diamond,style=filled,color=grey92,label="d7"];
        c [shape=diamond,style=filled,color=grey92,label="f17"];
        m [shape=box,label=y78,style=filled,color=palegreen1];
    a -> m [label="是",len=1.00,fontname=微软雅黑,fontsize=25];
    a -> "p9" [label="否",len=1.00,fontname=微软雅黑,fontsize=25];
    "p9" -> c [label="是",len=1.00,fontname=微软雅黑,fontsize=25];
    "p9" -> m [label="否",len=1.00,fontname=微软雅黑,fontsize=25];
    c -> m [label="是",len=1.00,fontname=微软雅黑,fontsize=25];
    c -> h8 [label="否",len=1.00,fontname=微软雅黑,fontsize=25];
    }
subgraph cluster_1 {
    //graph[rank=min;width=11;height=26];
        label = "aa";
        fontname=微软雅黑;
        style = filled;
        color=lightblue;
        b [shape=diamond,style=filled,color=grey92,label="d7"];
        d [shape=diamond,style=filled,color=grey92,label="f17"];
        n [shape=box,label=y78,style=filled,color=palegreen1];
    b -> n [label="是",len=1.00,fontname=微软雅黑,fontsize=25];
    b -> d [label="否",len=1.00,fontname=微软雅黑,fontsize=25];
    d -> n [label="是",len=1.00,fontname=微软雅黑,fontsize=25];
    d -> y78 [label="否",len=1.00,fontname=微软雅黑,fontsize=25];
    }
m -> c1;
n -> c1;
y78 -> c1;
h8 -> c1;
}

总结:多动手,多积累实战经验。博客园也有其他说这个工具的文章,

利用Graphviz 画结构图

Graphviz-Gdot语言学习

等。

时间: 05-14

利用Graphviz画出图的相关文章

构造From窗体获取数据库数据,去除数据库中无用信息,并赋值给字段,最后画出图

private void cbNum_SelectedIndexChanged(object sender, EventArgs e) { FieldListLug.Clear();//继续清除字段 if (cbType.Text == A)//选择了A { string killedString = ""; killedString = "ID,lugNumber,q1,q2,DnX,DnD,Th,kg"; DataTable tbSize =GetAccessD

利用highchair画出简易版甘特图

$(function () {      $('#container').highcharts({       chart: {         type: 'columnrange',         inverted: true     },          title: {         text: '项目进度图'     },      subtitle: {         text: '更新时间:2015-10-24'     },     xAxis: {         ca

如何使用excel画甘特图

甘特图小伙伴们都非常的熟悉,首先小编简单的向各位小伙伴介绍一下上面是甘特图,甘特图内在思想简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间.基本是一条线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间上计划和实际的活动完成情况.它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比.管理者由此可便利地弄清一项任务(项目)还剩下哪些工作要做,并可评估工作进度. 还记得在软考的时候,甘特图经常和PERT图放在一起,考察我们,既然提到了PERT

全面总结:MATLAB如何画出漂亮的图

在绘图命令中应该如何确定横坐标和纵坐标的标度尺寸(自己定范围) 如何在一个坐标中绘制多条曲线,并用不同的颜色区别. 希望得到答案,谢谢!!!!!!!!!!! help plot help axis axis ('xlabel','ylabel') a1=plot(); hlod on a2=plot(); legend([a1 a2],'图1名',‘图2名') hold off 还可以更多 x1=-pi:pi/12:pi; x2=-pi:pi/12:pi; y1=sin(x1); y2=cos(

python—networkx:在一张图中画出多个子图

通过plt.subplot能够在一张图中画出多个子图 #coding: utf-8 #!/usr/bin/env python """ Draw a graph with matplotlib. You must have matplotlib for this to work. """ __author__ = """Aric Hagberg ([email protected])"""

achartengine画出动态折线图

achartengine画出动态折线图的效果最近有个项目需要用到实时曲线图,我也上网搜索了一下,最后还是选择使用achartengine这个现成的东西,毕竟自己再canvas一下实在是太麻烦,而且项目时间上也不允许,虽然这个画图引擎比较简单,不过勉强够用了. 下一步问题就来了,我仓促上手,只会画静态图,就是事先定义好几个坐标,然后activity载入的时候折线就已经画好了,可是我的项目要求我每隔一秒种都要把新搜集到的数据添加到图表中去,类似于windows中那个任务管理器里的性能统计图,网上搜来

在EA中将画出的ER图转换成SQL脚本

在进行数据库设计的时候,想着正好安装着EA软件呢,看能不能用EA画ER模型.结果发现不仅能画,而且还能进行整套数据库设计(生成SQL脚本). 下面以机房收费系统用户--学生为例.学生可以查看余额,可以查看上机记录,可以查看上机状态,可以查看充值记录,可以修改密码.步骤如下: (1)建立ER图之前,首先在EA中应选择使用哪种数据库.如图所示: (2)画学生用户的ER模型图,如图所示: (3)转换成数据模型图,选中所有的实体和属性名,右击,点击转换出现如图: (4)选择ERD to Data Mod

[示例] Firemonkey 画出 1 点像素的图

说明:在 Firemonkey 在移动平台 Android & iOS 要直接在 Canvas 画出 1 点像素的线,似乎有点困难,不过利用一点小技巧,还是能达到这个要求的,首先要建立一个 Bitmap 并将大小乘以目前机子的 Scale ,再开始绘图即可. 源码下载:[示例]TestDraw1Pixel_画1点像素_Aone.zip 效果: 参考: http://sourceoddity.com/blog/2013/10/using-tcanvas-in-delphi-for-android/

灵悟礼品网上专卖店——画出E-R图

一.小组成员: 洪雪意(产品负责人) 陈淑筠(Master) 二.组内人员任务情况 计划完成的任务的第三个模块:分析并建立数据库 已完成的任务: 任务的第三个模块: 陈淑筠(完成任务1):画出商品资料.顾客资料E—R图 洪雪意(完成任务2):画出管理员资料.订单资料.订单明细E—R图 正在进行的任务: 任务的第三个模块: 陈淑筠(负责任务3):新建商品资料表.顾客资料表 洪雪意(负责任务4):新建管理员资料表.订单资料表.订单明细表 任务面板: 三.分析情况 陈淑筠:画出商品资料.顾客资料E—R