我们重点为大家介绍如何在python中绘制流程图:使用graphviz库,编写代码生成dot脚本,即可调用Graphviz软件进行解析,生成相应的图片。
由于graphviz库需要和Graphviz软件一起使用。要成功安装,需经过以下两个步骤:step1,安装Graphviz软件,并配置环境变量;step2,在cmd窗口输入 "pip install graphviz" 安装graphviz库。首先,我们来了解下Graphviz软件。它可用来绘制有向图,主要侧重于逻辑设计方面:如我们日常所用的思维导图,程序流程图,关系图,机器学习的决策树等。
图一的流程图就是用Graphviz软件画出来的。而在python中,我们可通过graphviz库轻松调用Graphviz,绘制这种流程图。下面我们一起来学习下如何绘制出这种有向图吧!
graphviz库通过使用图(Digraph/graph)、节点(node)和边(edge)等来绘制关系图或流程图,相应地不同结构有着不同属性,使用时可通过添加或删除属性来改变图形显示样式。接下来,我们先通过简单图的绘制来了解不同属性吧~
首先,依旧是导入模块,创建图表实例:
from graphviz import Digraphdot=Digraph(comment='Picture')然后,添加节点,并设置相应属性。在下面的程序中,我们设置节点A的标签为'Dot A',文本颜色(fontcolor)为蓝色,节点框(color)的颜色为红色;设置节点B的标签为'Dot B',文字大小(fontsize)为16;同理,设置节点C的形状(shape)为菱形:
dot.node('A','Dot A',fontcolor='blue',color='red')dot.node('B','Dot B',fontsize='16')dot.node('C','Dot C',shape='diamond')最后,设置节点方向及边属性,并查看图形:
dot.edges(['AB','AC'])
dot.edge('B','C')
dot.view()
如此,一个简单的流程图就绘制成功了。但是这个流程图看着有些乱,不够美观,是否可通过更改不同参数来改变其显示样式呢?这就涉及到边属性了。我们一起通过如下程序进一步了解下:
from graphviz import Digraph
dot=Digraph(comment='Picture')
dot.node('A','Dot A',fontcolor='blue',color='red')
dot.node('B','Dot B',fontsize='16')
dot.node('C','Dot C',shape='square') #设置节点C的形状为方形
dot.edges(['AB','AC'])dot.edge('B','C',arrowsize='1.5',constraint='false') #设置BC节点之间的有向标的箭头大小为1.5,并添加constraint属性设置是否根据边来影响节点的排序
dot.view()
同时,我们还可以输入如下程序查看相应的dot代码,并生成对应的PDF文件:
print(dot.source)
dot.render('D:\picture',view=True)
注:我们也可以在Graphviz软件中自行编写上图的dot代码并运行,即可生成对应的流程图。但在Python中通过graphviz库编写代码就能生成流程图,更加简单便捷。
通过上述的两段程序,想必大家已经对如何绘制有向图有了初步了解。还记得开篇我们所展示的看似错综复杂的流程图吗?下面,我们来展示下如何用graphviz库绘制出图一吧:
from graphviz import Digraph
grap_g = Digraph("G",format="pdf")
sub_g0=Digraph(comment="process1",node_attr={"style":"filled","color":"red"})
#一般可在单个节点处设置其属性,也可在创建图表时通过添加"node_attr"属性来设置节点样式:在这里,设置节点颜色为红色并进行填充
sub_g0.node("a0","a0")
sub_g0.node("a1","a1")
sub_g0.node("a2","a2")
sub_g0.edge("a0","a1")
sub_g0.edge("a1","a2")
sub_g0.edge("a2", "a0")
sub_g1=Digraph(comment="process1",graph_attr={"style":'filled'})
sub_g1.node("B","b0")
sub_g1.node("C","b1")
sub_g1.edges(["BC"])
grap_g.node("start", label="start",shape="diamond")
grap_g.node("end", label="end", shape="diamond")
grap_g.subgraph(sub_g0)
grap_g.subgraph(sub_g1)
grap_g.edge("start","a0")
grap_g.edge("start","B")
grap_g.edge("a1","B")
grap_g.edge("a2","end")
grap_g.edge("B","end")
grap_g.view()
可以看到,我们先后创建了三个图表:grap_g、sub_g0、sub_g1。首先,对三个图表内的节点,边等分别进行设置;然后,通过"grap_g.subgraph","grap_g.edge"将不同图表中的节点连接起来;最后,查看图表。这样,图一就绘制出来了。
以上就是关于graphviz库的全部介绍了。本文只截取了一部分重要且常用的属性进行了介绍,感兴趣的读者可进一步的了解其他属性并根据绘图需要进行使用。
以上就是“python graphviz 教程(Python图形可视化之graphviz)”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/10944/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料