一款适合程序员的流程图/思维导图利器
Posted qq_21478261
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一款适合程序员的流程图/思维导图利器相关的知识,希望对你有一定的参考价值。
首发地址👉👉:程序员必备流程图/思维导图利器
- 本文介绍graphviz在Python中的接口。
- graphviz是在复杂网络、生物信息学、软件工程、数据库和网页设计、机器学习等领域使用广泛的图(Graph)可视化利器。
- graphviz支持Linux、Windows、Mac、Solaris等多个系统,拥有多种编程语言的API (perl、python、ruby、C#等)。
graphviz功能
先看看graphviz都能干啥,以下demo来自graphviz官网,
Large Graphs
family tree
Radial Layout of a Network Graph
流程图
等等。
安装
首先,根据电脑系统安装graphviz,详细参考:https://graphviz.org/download/
然后,安装python接口graphviz
pip install graphviz
快速上手
graphviz主要使用graphviz.Graph制作无向图、使用graphviz.Digraph制作有向图,背后是一种称作DOT的语言(下文会简单介绍),
import graphviz
f = graphviz.Digraph(
filename='fsm.gv',
node_attr=
'color': '#01a2d9',
'style': 'filled'
, #设置所有node共有属性
format='png')
#整张图属性设置
f.attr(
rankdir='LR', #整个图的方向,LR表示由左到右等
size='8,8') #图形长宽
#终止node绘制
f.attr('node', shape='doublecircle')
f.node('LR_0')
f.node('LR_3')
f.node('LR_4')
f.node('LR_8')
#其它node
f.attr('node', shape='circle')
f.edge(
'LR_0', #起始node
'LR_2', #终止node
label='SS(B)', #起始、终止node之间的文字描述
color='#c72e29', #起始、终止node之间的连线颜色
)
#其他类似
f.edge('LR_0', 'LR_1', label='SS(S)')
f.edge('LR_1', 'LR_3', label='S($end)')
f.edge('LR_2', 'LR_6', label='SS(b)')
f.edge('LR_2', 'LR_5', label='SS(a)')
f.edge('LR_2', 'LR_4', label='S(A)')
f.edge('LR_5', 'LR_7', label='S(b)')
f.edge('LR_5', 'LR_5', label='S(a)')
f.edge('LR_6', 'LR_6', label='S(b)')
f.edge('LR_6', 'LR_5', label='S(a)')
f.edge('LR_7', 'LR_8', label='S(b)')
f.edge('LR_7', 'LR_5', label='S(a)')
f.edge('LR_8', 'LR_6', label='公众号:pythonic生物人', fontcolor='red')
f.edge('LR_8', 'LR_5', label='S(a)')
#f.view() #根据前面的format='png'设置,结果保存为png格式,也可设置为pdf等等
f #直接在Jupyter Notebook中渲染
如果调用f.view(),会生成两个文件fsm.gv、fsm.gv.png,fsm.gv中保存的就是上图使用DOT语言的描述,可以简单理解为上图由那些节点组成,各个节点之间的关系。
来看看fsm.gv中具体的描述
digraph
node [color="#01a2d9" style=filled]
rankdir=LR size="8,8"
node [shape=doublecircle]
LR_0
LR_3
LR_4
LR_8
node [shape=circle]
LR_0 -> LR_2 [label="SS(B)" color="#c72e29"]
LR_0 -> LR_1 [label="SS(S)"]
LR_1 -> LR_3 [label="S($end)"]
LR_2 -> LR_6 [label="SS(b)"]
LR_2 -> LR_5 [label="SS(a)"]
LR_2 -> LR_4 [label="S(A)"]
LR_5 -> LR_7 [label="S(b)"]
LR_5 -> LR_5 [label="S(a)"]
LR_6 -> LR_6 [label="S(b)"]
LR_6 -> LR_5 [label="S(a)"]
LR_7 -> LR_8 [label="S(b)"]
LR_7 -> LR_5 [label="S(a)"]
LR_8 -> LR_6 [label="S(b)"]
LR_8 -> LR_5 [label="S(a)"]
可以直接使用graphviz.Source执行DOT代码,
from graphviz import Source
Source.from_file('fsm.gv')#fsm.gv中存储DOT代码
以上是关于一款适合程序员的流程图/思维导图利器的主要内容,如果未能解决你的问题,请参考以下文章
ProcessOn — 在线协作绘图平台,适合制作流程图思维导图UML等