python桑基图源码
时间: 2023-11-11 21:47:58 浏览: 99
python+echarts+excel制作桑基图
5星 · 资源好评率100%
以下是一个使用Python和Matplotlib库绘制桑基图的示例代码:
```python
import matplotlib.pyplot as plt
# 定义节点和流量
nodes = ['A', 'B', 'C', 'D', 'E']
flows = [200, 300, 100, 250, 150]
# 计算起点和终点的位置
start_pos = [0]
for i in range(len(flows) - 1):
start_pos.append(start_pos[i] + flows[i])
end_pos = [start_pos[i] + flows[i] for i in range(len(flows))]
# 绘制桑基图
plt.figure(figsize=(10, 6))
plt.title("Sankey Diagram")
plt.xticks([])
plt.yticks([])
for i in range(len(nodes)):
plt.annotate(nodes[i], xy=(0, (start_pos[i] + end_pos[i]) / 2), va='center', ha='left')
for i in range(len(nodes) - 1):
plt.fill_between([0, 1], start_pos[i], end_pos[i], alpha=0.1)
plt.text(1.1, (start_pos[i] + end_pos[i]) / 2, flows[i], va='center', ha='left')
plt.plot([0, 1], [start_pos[-1], end_pos[-1]], 'k--', alpha=0.5)
plt.annotate(nodes[-1], xy=(1, (start_pos[-1] + end_pos[-1]) / 2), va='center', ha='right')
plt.show()
```
这个示例代码使用`nodes`列表定义了节点的名称,`flows`列表定义了流量大小。然后,通过计算每个节点的起点和终点位置,使用Matplotlib库绘制了桑基图。最终的结果如下图所示:
![sankey-diagram-python](https://cdn.jsdelivr.net/gh/Yousazoe/picgo-repo/img/sankey-diagram-python.png)
阅读全文