• 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]

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

  • 相关阅读:
    Qt 字符串QString arg()用法总结
    Qt子窗口QMidSubwindow全屏出现的问题总结
    QString介绍
    Qt控制台输出QString
    汽车辐射监测系统-Qt开发[转]发
    Eclipse Qt开发环境的建立
    串口调节工具
    QT 多线程程序设计 -互斥
    ArcGIS Spatial Query
    IQueryFielter接口
  • 原文地址:https://www.cnblogs.com/xudongliang/p/6554859.html
Copyright © 2020-2023  润新知