使用Python中的matplotlib库绘制桑基图
时间: 2024-02-13 20:00:41 浏览: 334
可以按照以下步骤使用Python中的matplotlib库绘制桑基图:
1. 安装matplotlib库:在命令行中输入 `pip install matplotlib` 安装matplotlib库。
2. 准备数据:准备起点和终点数据,并将其存储在DataFrame中。
3. 导入matplotlib库:在Python脚本中导入matplotlib库。
4. 绘制桑基图:使用matplotlib库中的 `sankey()` 函数绘制桑基图。需要传入起点和终点数据。
5. 自定义桑基图:可以使用不同的颜色、标签和注释等自定义桑基图。可以通过 `patche` 对象来访问桑基图的不同部分,并进行自定义。
以下是一个使用Python中的matplotlib库绘制桑基图的示例代码:
```python
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
import pandas as pd
# 准备数据
df = pd.DataFrame({'start': ['A', 'A', 'B', 'B'], 'end': ['B', 'C', 'C', 'D'], 'value': [20, 30, 40, 10]})
# 绘制桑基图
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Sankey Diagram")
sankey = Sankey(ax=ax, scale=0.01, offset=0.2, head_angle=180)
sankey.add(flows=df['value'], labels=df['start'], orientations=[0, 1, -1, 0], patchlabel="Flow", facecolor="#37c959")
diagrams = sankey.finish()
# 自定义桑基图
for i, diagram in enumerate(diagrams):
for text in diagram.texts:
text.set_fontsize(12)
for patch in diagram.patches:
patch.set_fc('#37c959')
patch.set_ec('none')
patch._label.set_fontsize(12)
for idx in diagram.parts:
if isinstance(idx, tuple):
patch = sankey.patches[idx]
patch.set_hatch('/')
patch.set_fc('#8c8c8c')
patch.set_ec('none')
sankey.patch.set_fc('none')
plt.show()
```
这个示例代码绘制了一个简单的桑基图,你可以根据自己的需要进行修改和调整。
阅读全文