美文网首页
敲代码前先构思一下-Graphviz-03-小示例

敲代码前先构思一下-Graphviz-03-小示例

作者: Data_Python_VBA | 来源:发表于2018-03-15 20:12 被阅读0次

系统:Windows 7
软件版本:Graphviz2.38

  • 好久不见,接下来会有几篇文章讲解dot语言
  • 今天介绍一个简单的案例

效果图

示例.png

对应dot代码

digraph test{
    node [ fontname = "Microsoft YaHei", fontsize =60]
    edge [ fontname = "Microsoft YaHei", fontsize =60]
    
    a [ label = "node1"]
    b [ label = "node2"]
    c [ label = "node3"]
    a -> b [ label = "line1"]
    a -> c [ label = "line2"]
    
    subgraph cluster_graph1{
        node [ fontname = "Microsoft YaHei", fontsize =12]
        edge [ fontname = "Microsoft YaHei", fontsize =12]
        
        d [ label = "node4"]
        e [ label = "node5"]
        f [ label = "node6"]
        d -> e [ label = "line3"]
        d -> f [ label = "line4"]
    }
}

代码截图

1.png

Part 1:整体结构

  1. 制作一个图,总共涉及到三个文件
  • dot语言的gv文本文件,一个bat执行文件,一个生成的图片
  1. 代码主体写在gv文件中,使用dot语言
  2. bat文件的目的旨在将dot代码渲染成图片
  • dot 示例.gv -Tpng -o 示例.png
  • 渲染算法(dot) gv文件(示例.gv) 目标文件格式(-Tpng) 输出(-o) 输出文件名称(示例.png)
  • 其中渲染算法(dot) 目标文件格式(-Tpng)存在其它选择,后续会介绍其中的一些

三个文件

2.png

Part 2:gv文件

  1. 第一层,digragh 名称{},最外层结构,指明输出图的名称
  2. 图里可以有节点和线,也可以有子图,子图里同样存在节点和线以及子图,嵌套(三大结构:图 线 点)
  • 图/节点/线都有其属性
  • 可以统一对其进行属性设置,下面就是对节点和线中字体及其大小进行设置
    • node [ fontname = "Microsoft YaHei", fontsize =12]
    • edge [ fontname = "Microsoft YaHei", fontsize =12]
  • 当然三大对象中的单个实例可以单独设置
  1. 节点定义:直接写一个变量即可,例如a,紧接着节点使用[]定义其属性
  • label定义节点名称
  • 存在不同子图中的节点,如果是不同节点,需使用不同变量名称,例如子图cluster_graph1中的节点就不要再使用变量a/b/c
  1. 线定义:节点1 -> 节点2,其中-> 是线定义的关键
  • label定义线的名称,其实就是由节点1指向节点2的那条线上写的字
  1. 子图定义,最外一层图,使用digragh来定义,子图则使用subgraph来定义
  • 注意:子图的名称必须以cluster来开始,否则无法识别子图
  • 子图同样使用{}将其中的内容包围起来
  1. 属性的定义采用就近原则,大家可以将子图中的node/edge删除,看看效果

以上为本次的学习内容,下回见

本文为原创作品,如若转载请标明出处,如发现有错误,欢迎留言指出


常按图片识别二维码,关注本公众号
Python 优雅 帅气

相关文章

网友评论

      本文标题:敲代码前先构思一下-Graphviz-03-小示例

      本文链接:https://www.haomeiwen.com/subject/vxcguxtx.html