Python桑基图怎么画
时间: 2024-02-09 18:38:39 浏览: 140
Python中可以使用matplotlib库来进行桑基图的绘制,具体步骤如下:
1. 导入matplotlib库
```python
import matplotlib.pyplot as plt
```
2. 准备数据
```python
labels = ['A', 'B', 'C', 'D']
sizes = [10, 20, 30, 40]
flows = [(-10, 10), (-20, 20), (-30, 30)]
```
其中,labels表示桑基图中的节点名称,sizes表示每个节点的大小,flows表示节点之间的流量,格式为元组,第一个元素表示流出节点的索引,第二个元素表示流入节点的索引,例如(-10, 10)表示从A节点流出10,流入B节点10。
3. 创建子图并绘制桑基图
```python
fig, ax = plt.subplots(figsize=(8, 6))
sankey = ax.sankey(left=0.1, right=0.9, bottom=0.1, top=0.9, flows=flows, labels=labels,
label_position='right', orientations=[0, 0, 1], scale=1, color='blue',
trunklength=0.1, edgecolor='None')
```
其中,left、right、bottom、top表示框架的位置,flows表示节点之间的流量,labels表示节点名称,label_position表示节点名称的位置,orientations表示节点的方向,0表示从左到右,1表示从上到下,scale表示节点大小的比例,color表示节点的颜色,trunklength表示流量的弯曲程度,edgecolor表示节点之间的边框颜色。
4. 设置标题和保存图片
```python
ax.set_title('Sankey Diagram')
plt.savefig('sankey.png')
```
最后调用plt.show()即可显示图像。完整代码如下:
```python
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D']
sizes = [10, 20, 30, 40]
flows = [(-10, 10), (-20, 20), (-30, 30)]
fig, ax = plt.subplots(figsize=(8, 6))
sankey = ax.sankey(left=0.1, right=0.9, bottom=0.1, top=0.9, flows=flows, labels=labels,
label_position='right', orientations=[0, 0, 1], scale=1, color='blue',
trunklength=0.1, edgecolor='None')
ax.set_title('Sankey Diagram')
plt.savefig('sankey.png')
plt.show()
```
阅读全文