官网:Graphviz

  最近一直在找如何用写代码的方式就可以实现数据结构可视化、流程图等等,于是发现了她,上手也比较简单,但正当我仅觉得不错的时候,我发现竟然还可以用python来写,瞬间好感度爆满啊!太激动了~

  下面就先简单说一说Windows下如何使用吧:

  首先不管是直接写digraph,还是用python,都必须要安装并配置好Graphviz,配置实际上都是常用的做法了,把dot.exe等文件路径添加到系统环境变量中的PATH即可。然后就可以用notepad等编辑器编写代码,保存时保存为 .gv 或 .dot 后缀,再用dot命令编译为pdf、png、jpg、jpeg等等即可。例如,编写内容如下:

digraph tree {
node [shape=circle]
67
53
79
46
57
70
88
43
55
60
74
56
67 -> 53
67 -> 79
53 -> 46
53 -> 57
79 -> 70
79 -> 88
46 -> 43
57 -> 55
57 -> 60
55 -> 56
70 -> 74
}

  然后键入dot命令:

  如果没有报错,则可以打开tree.png了:

  使用python编写graphviz还需要使用pip来安装一个包:

$ pip install graphviz

  然后就参考这篇文档来学习吧。

  一个例子:

from graphviz import Digraph, Graph

dot = Digraph(name='tree', node_attr={'shape': 'circle'})

dot.node('67')
dot.node('53')
dot.node('79')
dot.node('46')
dot.node('57')
dot.node('70')
dot.node('88')
dot.node('43')
dot.node('55')
dot.node('60')
dot.node('74')
dot.node('56') dot.edge('67', '53')
dot.edge('67', '79')
dot.edge('53', '46')
dot.edge('53', '57')
dot.edge('79', '70')
dot.edge('79', '88')
dot.edge('46', '43')
dot.edge('57', '55')
dot.edge('57', '60')
dot.edge('55', '56')
dot.edge('70', '74')
print(dot.source)
dot.render('avl-tree.gv', view=True)

  这里我不知道为啥我配置好了路径,却运行最后还是会报找不到相应文件路径的错,但还是能生成'avl-tree.gv'文件,然后就只有手动在命令行编译文件了。

  截图:

  还是输出了.gv文件:

  再来个例子:

from graphviz import Digraph

dot = Digraph(name='tree', filename='tree.gv', node_attr={'shape': 'circle'})
dot.node_attr.update(color='lightblue2', style='filled') dot.edge('67', '53')
dot.edge('67', '79')
dot.edge('53', '46')
dot.edge('53', '57')
dot.edge('79', '70')
dot.edge('79', '88')
dot.edge('46', '43')
dot.edge('57', '55')
dot.edge('57', '60')
dot.edge('55', '56')
dot.edge('70', '74') print(dot.source)

  tree.png:

  还可以再简单一些:

dot.edges([('67', '53'),
('67', '79'),
('53', '46'),
('53', '57'),
('79', '70'),
('79', '88'),
('46', '43'),
('57', '55'),
('57', '60'),
('55', '56'),
('70', '74')
])

  

Graphviz 使用笔记的更多相关文章

  1. GraphViz特性笔记(一)

    默认纵向,使用“rankdir="LR";”可使视图横向排列: 定义节点可以单独列出,“0;”方便自动生成: “edge[fontname="微软雅黑"];”设 ...

  2. 用 Graphviz+pvtrace 可视化函数调用

    最近在想怎么把一个程序的函数调用关系快速的用流程图的方式画出来,之后看到了这个一篇文章“用 Graphviz 可视化函数调用”(http://www.ibm.com/developerworks/cn ...

  3. 看开源代码利器—用Graphviz + CodeViz生成C/C++函数调用图(call graph)

    一.Graphviz + CodeViz简单介绍 CodeViz是<Understanding The Linux Virtual Memory Manager>的作者 Mel Gorma ...

  4. ANTLR3完全参考指南读书笔记[06]

    前言 这段时间在公司忙的跟狗似的,但忙的是没多少技术含量的活儿. 终于将AST IR和tree grammar过了一遍,计划明天写完这部分的读书笔记.   内容 1 内部表示AST构建 2 树文法   ...

  5. ANTLR3完全参考指南读书笔记[02]

    前言 程序语言是什么? 用wiki上的描述,程序语言是一种人工设计的语言,用于通过指令与机器交互:程序语言是编程程序的标记,而程序是一种计算或算法的描述.详细介绍和背景信息参考: Programmin ...

  6. dot language 学习笔记

    dot language 学习笔记 UP | HOME   dot language 学习笔记 Table of Contents 1 dot 语言简介 2 基本语法 2.1 常用图形 2.2 常用线 ...

  7. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

随机推荐

  1. python报错使用yum命令报错File &quot;/usr/bin/yum&quot;, line 30 except KeyboardInterrupt, e: SyntaxError: invalid syntax问题

    参考链接:https://blog.csdn.net/ltz150/article/details/77870735 1.背景: CentOS 7升级Python到3.6.2后,需要在/usr/bin ...

  2. 我的18vps~

    自从买了18vps的香港虚拟主机后,就面临一个问题,浏览器无法访问它的apache服务,后来发现,需要同时开启nginx服务: /usr/local/nginx/sbin/nginx -c /usr/ ...

  3. 吴裕雄 python 人工智能——基于Mask_RCNN目标检测(2)

    import os import sys import itertools import math import logging import json import re import random ...

  4. 再次配置caffe-windows vs2015+cuda10.0+RTX2070+python3.5

    前段时间换了一个配置高一点的台式机,因此重新安装了caffe,这次安装遇到了很多以前没有遇到的问题,特记录一下. 先罗列一下电脑配置:vs2015+cuda10.0+python3.5(Anacond ...

  5. ztree-编辑节点(树节点添加,删除,修改)

    <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - addNodes / editName / rem ...

  6. dfs+枚举,flip游戏的拓展POJ2965

    POJ 2965             The Pilots Brothers' refrigerator Description The game “The Pilots Brothers: fo ...

  7. LeetCode练题——66. Plus one

    1.题目 66. Plus One——easy Given a non-empty array of digits representing a non-negative integer, plus ...

  8. IDEA中使用Springboot+SSM的踩坑记(一)

    今天由于电脑无限蓝屏,不知怎么把我IDEA里面破解过的一些东西给搞没了,包括IDEA本体和JRebel,照着原来的方法破解连本体都开不起来了(哭死),索性下了个最新版来用,结果JRebel还是破解不得 ...

  9. CSS中 - display: inline-block

    参考 https://stackoverflow.com/questions/9189810/css-display-inline-vs-inline-block An inline-block el ...

  10. POJ1087 A Plug of UNIX

    你作为某高管去住宿了,然后宾馆里有几种插座,分别有其对应型号,你携带了几种用电器(手机,电脑一类的),也有其对应型号:可是不一定用电器就能和插座匹配上,于是宾馆的商店里提供了一些转换器,这些转换器可以 ...