编程学习网 > 编程语言 > Python > python graphviz 教程(Python图形可视化之graphviz)
2023
05-03

python graphviz 教程(Python图形可视化之graphviz)

我们重点为大家介绍如何在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教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取