使用python画树状图

使用python画树状图


前言

最近到一个需求,跟传销裂变差不多,有上级和下级的概念,根据下级的充值金额给上级返佣,这时候有个上下级的树状图肯定测试起来更加直观一点,也降低沟通成本。
在这里插入图片描述

一、前期准备

本地安装graphviz

graphviz是一个软件,可以根据特定语法文件生成图。
安装命令如下(我是mac环境):

brew install graphviz

安装python库

安装完本地已经可以根据文件生成PDF图了,但是我们还是要安装下python库,这样写代码组装数据比较方便

pip3 install graphviz

二、使用过程

1. hello world

先写个demo看一下效果

代码如下:

from graphviz import Digraph
# 画布
g = Digraph('G', filename='demo.gv')
# 定义两个节点
g.node('A', label='node1')
g.node('B', label='node2')
# 定义一条链接
g.edge('A', 'B')
# 渲染
g.view()

效果就是这样子:
在这里插入图片描述

2.给连接线加个文案

裂变总得标识下级充了多少钱是吧,所以我们需要在连接线上加个信息,标识他充了多少钱。
我们只需要在创建链接线时候加个参数就可以了

g.edge('A', 'B',label="¥100")

效果如下:
在这里插入图片描述

给节点搞点花样

有了充钱,那接下了就要区分下节点,毕竟上级节点逼格要高一点,对吧

# 星星
g.node('A', label='node1',shape='star')
# 双圆
g.node('A', la
Python 有很多库可以树状图,其中比较流行的有 `matplotlib`、`graphviz` 和 `networkx`。 以下是使用 `matplotlib` 和 `networkx` 两个库树状图的示例代码: 使用 `matplotlib`: ```python import matplotlib.pyplot as plt # 定义节点和边 nodes = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] edges = [('A', 'B'), ('A', 'C'), ('B', 'D'), ('B', 'E'), ('C', 'F'), ('C', 'G')] # 图 pos = {node: (idx, -idx) for idx, node in enumerate(nodes)} plt.figure(figsize=(6, 6)) nx.draw_networkx_nodes(nodes, pos, node_size=2000, node_color='lightblue') nx.draw_networkx_labels(nodes, pos, font_size=20, font_family='sans-serif') nx.draw_networkx_edges(edges, pos, width=2, alpha=0.5, edge_color='gray') plt.axis('off') plt.show() ``` 使用 `networkx`: ```python import networkx as nx import matplotlib.pyplot as plt # 定义节点和边 nodes = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] edges = [('A', 'B'), ('A', 'C'), ('B', 'D'), ('B', 'E'), ('C', 'F'), ('C', 'G')] # 图 plt.figure(figsize=(6, 6)) G = nx.DiGraph() G.add_nodes_from(nodes) G.add_edges_from(edges) pos = nx.spring_layout(G) nx.draw_networkx_nodes(G, pos, node_size=2000, node_color='lightblue') nx.draw_networkx_labels(G, pos, font_size=20, font_family='sans-serif') nx.draw_networkx_edges(G, pos, width=2, alpha=0.5, edge_color='gray') plt.axis('off') plt.show() ``` 这两个示例代码都会生成一个树状图,其中节点用字母表示,边用线段表示。您可以根据需要自行修改节点和边的定义,以及调整参数来美化图形。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值