一款适合程序员的流程图/思维导图利器

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等

GitMind是一款免费是思维导图软件,极具创意高效便捷。支持多端使用!

思维导图用啥软件做?

思维导图是如何制作流程图的