python 桑基图实例
时间: 2023-09-12 12:03:34 浏览: 122
以下是一个 Python 桑基图实例:
```python
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
# 设置桑基图参数
flows = [0.2, 0.1, 0.3, -0.1, -0.2, -0.1]
labels = ['A', 'B', 'C', 'D', 'E', 'F']
# 绘制桑基图
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Sankey Diagram")
sankey = Sankey(ax=ax, unit=None, offset=0.3, head_angle=180,
format='%.1f', gap=0.2, scale=1.0, shoulder=0.0)
sankey.add(flows=flows, labels=labels)
# 显示图像
diagrams = sankey.finish()
plt.show()
```
该代码将绘制一个包含 6 个节点的桑基图,其中前三个节点代表流入的物质,后三个节点代表流出的物质。在图中,A、B、C、D、E 和 F 分别代表 6 个节点。flows 列表中的正数代表流入的物质量,负数代表流出的物质量。在本例中,A、B、C 为流入节点,D、E、F 为流出节点。流入节点的物质总量为 0.6,流出节点的物质总量为 0.4。
相关问题
桑基图pyecharts
桑基图(Sankey diagram),也称为流图或能量图,是一种可视化工具,用于展示数据在不同实体间流动的强度和方向。在数据可视化库 PyEcharts 中,你可以创建交互式的桑基图来清晰地展示资源流动、网络流量等复杂的数据关系。
PyEcharts 是一个基于 ECharts(一款非常流行的数据可视化库)开发的 Python 接口,它提供了对 ECharts 功能的封装,使得用户可以通过 Python 代码轻松生成各种图表,包括桑基图。使用 PyEcharts 创建桑基图的一般步骤如下:
1. **导入库**:首先需要导入 pyecharts 模块和相关图表类型,例如 `Sankey`。
```python
from pyecharts.charts import Sankey
```
2. **数据准备**:准备包含源节点、目标节点和流量值的数据。通常是一个二维列表,每行代表一条数据流。
3. **初始化图表**:根据数据创建一个新的 Sankey 图表实例。
```python
sankey = Sankey()
```
4. **设置属性**:给图表设置标题、标签、宽度和高度等基本属性。
```python
sankey.title("桑基图示例")
sankey.width(1200)
sankey.height(600)
```
5. **添加数据**:调用 `add` 方法,传入数据和节点信息。
```python
sankey.add(
"流量",
[("源节点1", "目标节点1"), ("源节点2", "目标节点2")],
source="source",
target="target",
value="value"
)
```
6. **渲染图表**:最后调用 `render` 函数将图表保存到本地文件或在浏览器中显示。
```python
sankey.render("sangkiu_chart.html")
```
pyecharts桑基图右对齐
要实现 pyecharts 桑基图的右对齐,可以通过调整图表配置项来实现。具体步骤如下:
1. 导入需要的库和模块:
```python
from pyecharts import options as opts
from pyecharts.charts import Sankey
```
2. 创建桑基图实例对象:
```python
sankey = Sankey()
```
3. 配置图表属性:
这里我们需要调整节点的位置,将节点位置设置为右对齐。可以通过 `pos_right` 参数来实现。同时,还需要设置节点的水平偏移量,这里设置为 50。
```python
sankey.add(
...
label_opts=opts.LabelOpts(
position="right",
offset=50
),
...
)
```
4. 渲染图表:
```python
sankey.render("sankey.html")
```
完整代码示例:
```python
from pyecharts import options as opts
from pyecharts.charts import Sankey
nodes = [
{"name": "A"},
{"name": "B"},
{"name": "C"},
]
links = [
{"source": "A", "target": "B", "value": 10},
{"source": "B", "target": "C", "value": 15},
]
sankey = Sankey()
sankey.add(
"sankey",
nodes,
links,
label_opts=opts.LabelOpts(
position="right",
offset=50
),
linestyle_opt=opts.LineStyleOpts(
opacity=0.2
)
)
sankey.set_global_opts(
title_opts=opts.TitleOpts(title="Sankey-右对齐"),
tooltip_opts=opts.TooltipOpts(trigger="item", trigger_on="mousemove"),
legend_opts=opts.LegendOpts(is_show=False)
)
sankey.render("sankey.html")
```
阅读全文