通常我们使用graphviz这个包来协助绘制流程图或决策树的可视化,免费graphviz-2.38.msi下载地址:https://download.csdn.net/download/weixin_42213421/12739476

下载完成后,通过以下语句将包加载进来:

from graphviz import Digraph
# 写明graphviz的bin文件目录
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

一、绘制流程图

现有数据集如下所示:

其中:

pnode:表示父节点

node:表示父节点下的子节点

gap/gap_rate:表示目标差值

edge:表示边关系

lv:lever表示层级

通过以上数据集,我要绘制如下所示流程图:

实现方式如下:

# 实例化一个Digraph对象(有向图),name:生成的图片的图片名,format:生成的图片格式
dot= Digraph(name="G",format="png")将所有列的数据都转成list格式
node_list = data1['node'].tolist()
gap_list=data1['gap'].tolist()
gap_rate_list=data1['gap_rate'].tolist()
edge_list=data1['edge'].tolist()
lv_list=data1['lv'].tolist()# dot.node定义节点名称,name:这个节点对象的名称,label:节点名,color:画节点的线的颜色
#fontname:防止字体乱码情况
for i in range(len(node_list)):if gap_rate_list[i]>0.5: dot.node(name=edge_list[i].split('->')[1]+"|"+edge_list[i].split('->')[0],label=node_list[i]+'\n'+"Gap:{:.2f}K".format(gap_list[i]/1000),color="lightsalmon",style = "filled",fontname="Microsoft YaHei")else:dot.node(name=edge_list[i].split('->')[1]+"|"+edge_list[i].split('->')[0],label=node_list[i]+'\n'+"Gap:{:.2f}K".format(gap_list[i]/1000),color="peachpuff",style = "filled",fontname="Microsoft YaHei")

节点定义好之后,对各个节点添加边关系:

# add edges 1-4层
for i in range(len(node_list)):target_list=edge_list[i].split('->')[1]+"|"+edge_list[i].split('->')[0]# add edge 第一层if lv_list[i]==1 and "ROOT" in target_list:dot.edge('total_gap',target_list)# add edge 第二层for j in range(len(node_list)):temp_list=edge_list[j].split('->')[1]+"|"+edge_list[j].split('->')[0]if lv_list[i]==2 and lv_list[j]==1 and (target_list.split("|")[1] == temp_list.split("|")[0]) :dot.edge(temp_list,target_list)# add edge 第三层if lv_list[i]==3 and lv_list[j]==2 and gap_rate_list[j]>0.1 and (target_list.split("|")[1] == temp_list.split("|")[0]):dot.edge(temp_list,target_list)# add edge 第四层         if lv_list[i]==4 and lv_list[j]==3 and gap_rate_list[j]>0.1 and (target_list.split("|")[1] == temp_list.split("|")[0]):dot.edge(temp_list,target_list)

绘图:

# filename:图片的名称,若无filename,则使用Digraph对象的name,默认会有gv后缀
# directory:图片保存的路径,默认是在当前路径下保存
dot.view(filename="水果零食业绩归因", directory="D:\MyTest")

打印生成的源代码:

print(dot.source)

使用node()和edge()或edges()方法将节点和边添加到图形对象:

  • Digraph():实例化一个图形对象
  • node():方法第一个参数是name,第二个参数是label,即node画节点
  • edges():方法可以一次添加多个边, 每个边用字符串表示, 比如 cb 表示从 c 到 b 的边,即edges画边
  • edge():方法一次添加一个边
  • view():把图形画出来,并自动显示图片(弹出来),一般使用view()进行调试
  • render():把图形画出来,一般使用render保存图片的时候,view=False(不弹出图片)

python用graphviz绘制流程图相关推荐

  1. python流程图怎么画-Python使用graphviz画流程图过程解析

    问题描述 项目中需要用到流程图,如果用js的echarts处理,不同层级建动态计算位置比较复杂,考虑用python来实现 测试demo 实现效果如下 完整代码 import yaml import o ...

  2. Graphviz 绘制流程图

    凝视说明非常具体.不再详述. digraph G{//dot 是一种画图语言,它能够方便你採用图形的方式高速.直观地表达一些想法,//比方描写叙述某个问题的解决方式,构思一个程序的流程,澄清一堆貌似散 ...

  3. python流程图-使用Graphviz快速绘制流程图

    简介 自己在绘制流程图的时候一般用到的是Visio,但是感觉连线以及框图位置调整起来很烦-经过一番了解之后发现了Graphviz可以使用Python代码来绘制流程图的软件,使用这个工具我们可以更专注于 ...

  4. python绘制基因结构图_Python调用graphviz绘制结构化图形网络示例

    安装完成后将安装目录的bin 路径加到系统路径中,有时候需要重启电脑. 然后: pip install graphviz import graphviz as gz 有向图 dot = gz.Digr ...

  5. python主程序流程图_用Python编程绘制流程图,你用过吗?

    您一定听说过 "Graphviz"绘图软件吧.Graphviz (Graph Visualization Software) 是一个由AT&T实验室启动的开源工具包,它采用 ...

  6. 用python画一束满天星花朵,python满天星绘制流程图

    大家好,小编来为大家解答以下问题,用python画一束满天星花朵,python满天星绘制流程图,今天让我们一起来看看吧! 1.用python画一百个同心圆的代码? import matplotlib. ...

  7. python如何自动生成流程图

    Python中有多个库可以用来生成流程图,其中最常用的是graphviz库.graphviz是一个开源的流程图绘制工具,可以使用Python的graphviz库来自动生成流程图.下面是使用graphv ...

  8. PlantUML(程序员绘制流程图专用工具)

    原文地址为: PlantUML(程序员绘制流程图专用工具) 什么是 PlantUML PlantUML 是一个画图脚本语言,用它可以快速地画出: 时序图 流程图 用例图 状态图 组件图 简单地讲,我们 ...

  9. 神操作 用 Python 操作 xmind 绘制思维导图

    在平时的工作中当我们要总结一些知识的时候就需要一款工具来画画流程图,这里推荐 XMind 软件,用 Xmind 绘制的思维导图看起来思路清晰,那么今天的文章介绍关于思维导图的相关知识以及用 Pytho ...

最新文章

  1. linux系统运行状态检查
  2. 怎么注册今日头条?哪里可以直接购置?
  3. python 目录和文件操作
  4. 从网络管理员到首席架构师,这 16 年我是如何实现每年加薪 10000 美元的?
  5. 最新最全vuepress零基础搭建(github搭建+新增插件)
  6. 求最大值及其下标编程总结
  7. 程序人生:给程序员的18个建议
  8. 学java前要学css_教你一招:学习Java必须学会的CSS用法
  9. go 连接服务器 并存放图片_基于 Go 语言开发在线论坛(二):通过模型类与MySQL数据库交互...
  10. unix入门经典_程序员大神们的经典编程语录
  11. 【目标检测】FPN(Fature Pyramid Network)详解
  12. 编程实现将rdd转换为dataframe:源文件内容如下(_第四篇|Spark Streaming编程指南(1)
  13. Python-网站页面代码获取
  14. gps 数据解析-NMEA 0183协议
  15. java求两点间的距离_java计算两点间的距离方法总结
  16. python 画图工具——matplotlib命令式函数
  17. 计算机毕业设计ssm吃到撑零售微商城
  18. paddlepaddle_文件操作_画图操作_图片基本处理
  19. 液化气瓶口的二维码“身份证”
  20. u盘插电脑计算机卡了,U盘连接电脑非常卡的解决方法-电脑自学网

热门文章

  1. educoder_python:4-1-逻辑控制(if)灯光开关,解一元二次方程,输入分数输出等级
  2. java图片怎么定义属性_Java读写图片XMP元数据XMPMeta(自定义属性信息)
  3. Python 3.X | 一文看懂不懵圈:位置参数(必选参数)、默认参数、可变参数、关键字参数、形参、实参...
  4. 接口文档Swagger、knife4j和YApi、APIDOC
  5. 单位OV代码签名证书与EV代码签名证书有什么区别
  6. TA - 一种省资源的卡通树的做法
  7. vue路由重定向到登录页面_Vue 组件单元测试究竟测试什么?
  8. 动物识别专家系统PYTHON
  9. 打开Excel,原有的数字内容都自动转换成日期格式的问题
  10. Ratel:一直站在Android逆向巅峰的平头哥