【桑基图】
桑基图是一种特殊的流程图。描述第一组节点到第二组节点的数据流向及流量大小。
特点: 第一组节点的总数据量 等于 第二组节点的总数据量(流出=流入,能量守恒)—— 需要自己检查
一、桑基图相关示例代码如下:
from pyecharts import options as opts
from pyecharts.charts import Sankey
# [
# ['江西省', 86000],
# ['福建省', 85000], ['广东省', 82000], ['湖南省', 65000], ['广西省', 65000],
# ['贵州省', 30000], ['云南省', 20000], ['四川省', 10000], ['甘肃省', 5000],
# ['陕西省', 7000], # 星星之火可以燎原,《毛泽东选集1-4卷》,唯物辩证法——实践论和矛盾论
# ]
# 【桑基图展示: 红一方面军(中央红军)长征兵力流向】
# 定义节点
nodes = [
{"name": "江西"},
{"name": "广东"},
{"name": "福建"},
{"name": "广西"},
{"name": "湖南"},
{"name": "牺牲"},
{"name": "贵州"},
]
# 红一方面军86000——李德博古, (右倾领导人)
# 北上抗日先遣队6000——方志敏, 《最可爱的中国》
# 定义数据流向
links = [
# 源头source --> 目标target
{"source": "江西", "target": "广东", "value": 84000},
{"source": "江西", "target": "福建", "value": 2000},
{"source": "广东", "target": "湖南", "value": 65000},
{"source": "广东", "target": "牺牲", "value": 19000},
{"source": "湖南", "target": "贵州", "value": 30000},
{"source": "湖南", "target": "牺牲", "value": 35000},
]
# 拿破仑东征图(最原始的桑基图)
c = (
Sankey()
.add(
"Sankey",
nodes,
links,
# Sankey 组件离容器上侧的距离
pos_top='15%',
# 线条样式配置项,参考 `series_options.LineStyleOpts`
linestyle_opt=opts.LineStyleOpts(
opacity=0.2, curve=0.5, color="source"),
# 标签配置项,参考 `series_options.LabelOpts`
label_opts=opts.LabelOpts(position="right"),
# 提示框配置项
tooltip_opts=opts.TooltipOpts(is_show=True),
)
# 全局配置项
.set_global_opts(
# 标题
title_opts=opts.TitleOpts(title="Sankey-基本示例"),
# 图例
legend_opts=opts.LegendOpts(is_show=True, pos_left='35%', pos_bottom='90%')
)
)
# 渲染图表
c.render_notebook()
二、图表展示