根据不完整统计,90%想用sankey图的朋友都是因为被它炫酷的外表所吸引,举个例子:
关于sankey图的定义是这样描述的:
- 即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。
- 流程图的一种
- 由若干个三元素组成(节点,边,流量)
- 遵循守恒定律,无论怎么流动,开端和末端数据始终一致
下面我们来简单实现一个Sankey图
第一步,我们先收集数据。
这里我在2020意大利新冠肺炎案例统计收集了意大利的患者年龄分布。
我们用pandas库来绘制统计表。当然也可以用excel保存为xlsx文件。
db1 = pd.DataFrame({
'country':['Italy','Italy','Italy','Italy'],
'ages':['18岁以下','19-50岁','50-70岁','70岁以上'],
'confirm':['1677','31394','43617','43139'],
'Deceased':['167','408','4492','34813'],
'Active/Recovered': ['1510','30986','39125','8326']
})
print(db1)
那么打印下统计表得到:
country ages confirm Deceased Active/Recovered
0 Italy 18岁以下 1677 167 1510
1 Italy 19-50岁 31394 408 30986
2 Italy 50-70岁 43617 4492 39125
3 Italy 70岁以上 43139 34813 8326
如果是要读入excel保存的表格那么只要简单的一行命令:
db1 = pd.read_excel('statistik.xlsx)
第二步,我们开始处理数据
画图按照Sankey图的规则,需要定义节点,边,流量。