zoukankan      html  css  js  c++  java
  • Graphviz 对网状结构进行可视化

    Graphviz 是一款开源的,免费的图结构的可视化软件,只需要描述清楚图中的顶点,边的信息,Graphviz 可以自动化的对图进行布局,生成对应的图片;

    Graphviz 采用DOT 的这种语言来描述图中的信息;

    对于图这种数据结构来说,分为有向图和无向图,本质就是图中两个节点之间的关系有没有方向,针对不同类型的图结构,Graphviz 提供了不同的工具来实现自动化的布局

    dot 针对有向图,采用从上到下的布局方式进行可视化,测试官方文档中的几个例子:

    1) 第一个例子

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

    运行命令:

    dot -T pdf test.dot -o test.pdf

    生成的图片为

    Graphviz 支持多种输出格式,包括png, pdf, svg, gif, postscript;

    dot 源代码中的digraph 代表 directerd graph , 表示有向图;G 是图的名字;大括号内描述图中的节点和边的信息;

    在这个例子中只是简单的描述了边的信息,不设置任何的属性,默认输出的格式就和上图一致;

    2) 第二个例子

    digraph G {
    	size ="4,4";
    	main [shape=box]; /* this is a comment */
    	main -> parse [weight=8];
    	parse -> execute;
    	main -> init [style=dotted];
    	main -> cleanup;
    	execute -> { make_string; printf}
    	init -> make_string;
    	edge [color=red]; // so is this
    	main -> printf [style=bold,label="100 times"];
    	make_string [label="make a
    string"];
    	node [shape=box,style=filled,color=".7 .3 1.0"];
    	execute -> compare;
    }

     生成的图片为

    在这个例子中,对图中的节点和边的属性进行了一些设置,设置属性时的写法为[key = value];

    对于节点来说,常用的属性有

    label   : 文字注解,节点上显示的名字,默认使用节点定义时的文字,有label 属性时就采用label 属性设置的值

    shape : 形状,默认为 ellipse(椭圆),可选的值有 box(方框),circle (圆), record(和方框相似), plaintext (不显示边框,只显示文字), polygon (多边形)

    weight : 设置边框的宽度

    height : 设置边框的长度

    sides :  边的数目,对于多边形来说,边的条数控制了形状,3条边为三角形,4条边为矩形或者梯形,除了record 之外的形状都被视为多边形,可以设置sides

    color  : 颜色

    style : 风格,默认采用的是只有外边框,还可以设置成style = filled, 这是就可以通过color 属性添加填充色 

    peripheries : 设置边框绘制的次数,默认为1次

    对于边来说,常见的属性有

    style : 连线的类型,默认为实线,可选的值有dotted (点构成的虚线), bold(加粗的实线), 

    label : 连线的文字说明,在边上会有显示对应的文字

    color : 连线的颜色

    除了对每个节点和每条边单独设置属性外,还可以对所有的点和边进行全局设置

    node[shape=box]

    edge[color=red]

    在这两行设置的后面的节点会继承这些属性,如果把这两行放在开头,就可以进行全局的设置

  • 相关阅读:
    cf D. Vessels
    cf C. Hamburgers
    zoj 3758 Singles' Day
    zoj 3777 Problem Arrangement
    zoj 3778 Talented Chef
    hdu 5087 Revenge of LIS II
    zoj 3785 What day is that day?
    zoj 3787 Access System
    判断给定图是否存在合法拓扑排序
    树-堆结构练习——合并果子之哈夫曼树
  • 原文地址:https://www.cnblogs.com/xudongliang/p/6554859.html
Copyright © 2011-2022 走看看