三层桑基图python
时间: 2023-09-23 07:10:23 浏览: 184
三层桑基图是一种数据可视化的方式,用于展示三个不同类别之间的关系和交集。在Python中,可以使用一些库来创建三层桑基图,比如matplotlib和seaborn。
下面是一个使用matplotlib库来创建三层桑基图的简单示例:
```python
import matplotlib.pyplot as plt
# 定义三个类别的大小
A_size = 50
B_size = 30
C_size = 20
# 绘制第一层
plt.barh(0, A_size, color='blue', alpha=0.5, label='A')
# 绘制第二层
plt.barh(1, B_size, color='green', alpha=0.5, label='B')
# 绘制第三层
plt.barh(2, C_size, color='orange', alpha=0.5, label='C')
# 设置图例
plt.legend()
# 设置Y轴刻度标签
plt.yticks(range(3), ['A', 'B', 'C'])
# 显示图形
plt.show()
```
这里使用`barh`函数绘制水平条形图来表示每个类别的大小,不同类别使用不同的颜色表示,并使用`legend`函数添加图例,`yticks`函数设置刻度标签。
你可以根据自己的数据和需求适当调整代码,以创建符合你要展示的三层关系的桑基图。
相关问题
用pyecharts写一个3层的桑基图,第一层节点为A1、A2和A3,大小分别为10、7和5,第二层为B1和B2,大小分别为9和3,第三层为C1和C2,大小分别为4和6。要求A1于B1连接,A2同时与B1和B2连接,B1和B2同时与C1连接,A3又和C2连接。
好的,以下是用pyecharts实现的代码:
```python
from pyecharts import options as opts
from pyecharts.charts import Sankey
nodes = [
{"name": "A1"},
{"name": "A2"},
{"name": "A3"},
{"name": "B1"},
{"name": "B2"},
{"name": "C1"},
{"name": "C2"},
]
links = [
{"source": "A1", "target": "B1", "value": 10},
{"source": "A2", "target": "B1", "value": 7},
{"source": "A2", "target": "B2", "value": 7},
{"source": "A3", "target": "C2", "value": 5},
{"source": "B1", "target": "C1", "value": 9},
{"source": "B2", "target": "C1", "value": 3},
{"source": "B1", "target": "C2", "value": 1},
{"source": "B2", "target": "C2", "value": 5},
]
sankey = (
Sankey()
.add(
"sankey",
nodes=nodes,
links=links,
itemstyle_opts=opts.ItemStyleOpts(border_width=1, border_color="#aaa"),
linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"),
label_opts=opts.LabelOpts(position="right"),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="三层桑基图"),
tooltip_opts=opts.TooltipOpts(trigger_on="mousemove"),
)
.render("sankey.html")
)
```
生成的图如下:
![sankey](https://cdn.jsdelivr.net/gh/feiyuu/cdn/img/2022/sankey.png)
阅读全文