• 画图工具Graphviz安装配置


    Graphviz (英文Graph Visualization Software缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。Graphviz是一个自由软件,其授权为Eclipse Public License。其Mac版本曾经获得2004年的苹果设计奖

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

    Graphviz是门基于dot语言的绘图工具,也就是说它不是使用鼠标来画图的,而是通过dot这种描述语言来做的,然后在命令行下使用命令生成对应的图片,这样做的优点是不用去手功的对齐坐标,而且也可以做为一些可视化的解决方案,但是它的缺点同样是显著的:无法对每一个元素的位置进行很详细的控制。这里就存在一个取舍问题了。像我这种就用来画画流程图的人来说,已经够用了,而且要比visio那种工具更好用。

    DOT语言由三个对象组成grahps,nodes,edges,这与离散数学中的图的定义是一个概念。下面是个具体的例子,第一行是图名与类型,其于的就是创建nodes,edges,或者subgraphs。在要创建的这些对象中,它们的名字与属性可以是 C identifiers,数字,或者是quoted C string, 引号的作用主要是为了在名字与属性中可以带空白符与标点符号。

    例子:

    digraph G {
    main -> parse -> execute;
    main -> init;
    main -> cleanup;
    execute -> make_string;
    execute -> printf;
    init -> make_string;
    main -> printf;
    execute -> compare;
    }

    在命令行使用如下命令

    dot -Tpng example.dot -o example.png

    -T的意思是生成的文件是png格式的,example.dot是代码所在文件,-o指定生成的文件名。运行成功后将会类似如下的图。

    如果想让边带有文字,如下图,可以使用类似如下语句

    main->parse[label=”abc”];

    下面是一个比较复杂的例子:

    digraph G {
    edge [fontname="FangSong"];
    node [shape=box, fontname="FangSong" size="20,20"];
    {
    Lexical_Analyzer [label="词法分析器"];
    Syntax_Analyzer [label="语法分析器"  ];
    Semantic_Analyzer [label="语义分析"   ];
    Intermediate_Code_Generator [label="中间代码生成器" ];
    Machine_Independent_Code_Optimizer [label="机器无关代码优化器"   ];
    Code_Generator [label="代码生成器" ];
    Machine_Dependent_Code_Optimizer [label="机器相关代码优化器"  ];
    }
    node[shape=plaintext, fontname="KaiTi" ]{
    character_stream [label="字符流"];
    target_machine_code [label="目标机器语言" ];
    }character_stream ->Lexical_Analyzer;
    Lexical_Analyzer ->Syntax_Analyzer [label="符号流"];
    Syntax_Analyzer  ->Semantic_Analyzer  [label="语法树"];
    Semantic_Analyzer  ->Intermediate_Code_Generator  [label="语法树"] ;
    Intermediate_Code_Generator->Machine_Independent_Code_Optimizer  [label="中间表示形式"];
    Machine_Independent_Code_Optimizer  ->Code_Generator  [label="中间表示形式"];
    Code_Generator ->Machine_Dependent_Code_Optimizer [label="目标机器语言"];
    Machine_Dependent_Code_Optimizer->target_machine_code ;
    }

    这里要注意的是中文问题,graphviz默认设置下是不支持中文,如果在dot文件中直接写中文,会显示成乱码,要解决这个问题要做两件事,

    1、把源文件保存为UTF-8的格式
    2、设置fontname,也就是红色的部分,

    如:

    digraph G { 
    rankdir = LR;
    node[fontname="Microsoft YaHei"];
    
    中文1,->中文2;
    };

    如果想更深入的了解graphviz,可以去它的官方网站看一下相关文档,里面还有一些paper,如果感兴趣的话也可以看看,其实graphviz还用到了编译原理的知识,只是没有什么创新所以也就没有重点说了,但从这可见编译原理的重要性。

    更多文档:http://www.ibm.com/developerworks/cn/aix/library/au-aix-graphviz/index.html?ca=dat

    但是后来又看到有个东西叫做:

    pygraphviz

    对应主页:

    PyGraphviz

    对应的下载地址有两个,一个是Python官网中的:

    http://pypi.python.org/pypi/pygraphviz/

    一个是其自己网站中的:

    http://networkx.lanl.gov/download/pygraphviz/

    分别都是下载对应的源码,要自己安装的。

    但是用源码去安装,涉及到要自己编译。

    目前找到可以参考的例子是:

    我的pygraphviz安装之路

    Installing PyGraphviz on Windows

    更多:Doxygen + Graphviz windows下安装配置(图解)

    使用:

    http://www.cnblogs.com/sld666666/archive/2010/06/25/1765510.html

  • 相关阅读:
    CodeForces 1332D Walk on Matrix
    CodeForces 1324F Maximum White Subtree
    CodeForces-1324E-Sleeping-Schedule
    CodeForces-1324D-Pair-of-Topics
    理解字节序 大端字节序和小端字节序
    公钥 私钥 数字证书概念理解
    简要介绍 X Window System (又称为X11 or X)
    动态规划的简洁说明
    二分法的研究
    两个变量的内容交换
  • 原文地址:https://www.cnblogs.com/youxin/p/3527999.html
Copyright © 2020-2023  润新知