官网: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. 微信小程序前端坑

    链接:https://www.cnblogs.com/showMagic/p/7677551.html

  2. [代码记录] C语言链表

    #开始 · 简单的创建链表 #代码 #include<conio.h> #include<stdio.h> #include<stdlib.h> struct St ...

  3. appium 无法通过工具定位webview页面元素的问题

    app里面页面有原生和webview的,或者H5的 1.手机百度搜索结果页面 手机百度,点击搜索输入框,输入关键字点击搜索,出来的搜索结果页面,无法通过UI automator viewer来定位元素 ...

  4. zookeeper 源码(一) 选举和同步数据

    前言 在开始阅读代码前我们先来了解一下zk 的大致结构,具体大概要实现的核心功能有那些,心中有个大概的框架阅读代码时再深入其中的细节,就会非常好懂,本人觉得这是一个阅读源码的好方法,可以最快地切入到源 ...

  5. 【C语言】赋值运算中的类型转换

    #include<stdio.h> int main() { int a, b; double x = 1.54; char ch; a = x; x = ; b = 'a'; ch = ...

  6. win10中,vscode安装go插件排雷指南

    最近学习go,想着使用强大的vscode编写go,在安装go插件过程中,遇到了很多问题.下面记录解决方案. 1)win10环境,安装go,vscode,git 配置GOPATH环境变量,在我的电脑-& ...

  7. webpack 中使用 autoprefixer

    webpack中autoprefixer是配合postcss-loader使用的,首先安装相应资源: npm i -D style-loader css-loader postcss-loader a ...

  8. 「NOIP2013」货车运输

    传送门 Luogu 解题思路 首先 \(\text{Kruskal}\) 一下,构造出一棵森林. 并查集还要用来判断连通性. 倍增 \(\text{LCA}\) 的时候顺便维护一下路径最小值即可. 细 ...

  9. SmartAssembly批处理用法

    在SmartAssembly.exe根目录有个SmartAssembly.com . 在命令行执行SmartAssembly.com就能看到所有的命令参数了. 用SmartAssembly.exe建好 ...

  10. ROS学习资源

    1.ROS机器人操作系统自主学习实践环境 https://www.shiyanlou.com/courses/854 2.ROS官方网站 http://wiki.ros.org/ ROS中文官方网站 ...