python 桑基图 地理坐标_【转载】Python数据可视化-实现Sankey桑基图
根据不完整统计,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图的规则,需要定义节点,边,流量。
可以理解为两个数据结构:nodes和links。
在这个案例,所有节点就是:Italy,18岁以下,19-50岁,50-70岁,50-70岁,confirm,Deceased,Active/Recovered
我们用一个字典嵌套的链表来储存:
nodes=[]
for i in range(2):
values = db1.iloc[:,i].unique()
for value in values:
dic={}
dic['name'] = value
nodes.append(dic)
nodes.append({'name':'Deceased'})
nodes.append({'name':'Active/Recovered'})
[{'name': 'Italy'}, {'name': '18岁以下'}, {'name': '19-50岁'},
{'name': '50-70岁'}, {'name': '70岁以上'}, {'name': 'Deceased'},
{'name': 'Active/Recovered'}]
然后定义边和流量,数据从哪里流向哪里,流量为多少,按照source-target-value的格式保存。我们用循环加字典可以轻松搞定
links = []
for i in db1.values:
dic={}
dic['source']=i[0]
dic['target']=i[1]
dic['value']=i[2]
links.append({'source':i[0],'target':i[1],'value':i[2]})
links.append({'source':i[1],'target':db1.keys()[3],'value':i[3]})
links.append({'source':i[1],'target':db1.keys()[4],'value':i[4]})
print(links)
[{'source': 'Italy', 'target': '18岁以下', 'value': '1677'},
{'source': '18岁以下', 'target': 'Deceased', 'value': '167'},
{'source': '18岁以下', 'target': 'Active/Recovered', 'value': '1510'},
{'source': 'Italy', 'target': '19-50岁', 'value': '31394'},
{'source': '19-50岁', 'target': 'Deceased', 'value': '408'},
{'source': '19-50岁', 'target': 'Active/Recovered', 'value': '30986'},
{'source': 'Italy', 'target': '50-70岁', 'value': '43617'},
{'source': '50-70岁', 'target': 'Deceased', 'value': '4492'},
{'source': '50-70岁', 'target': 'Active/Recovered', 'value': '39125'},
{'source': 'Italy', 'target': '70岁以上', 'value': '43139'},
{'source': '70岁以上', 'target': 'Deceased', 'value': '34813'},
{'source': '70岁以上', 'target': 'Active/Recovered', 'value': '8326'}]
nodes和links定义好了之后,就已经完成了80%
第三步,绘图
我们可以使用pyecharts的库来实现,这一段代码几乎是固定的格式
from pyecharts.charts import Sankey
from pyecharts import options as opts
pic = (
Sankey().add('',
nodes,
links,
linestyle_opt=opts.LineStyleOpts(opacity = 0.3, curve = 0.5, color = 'source'),
label_opts=opts.LabelOpts(position = 'top'),
node_gap = 30,
)
.set_global_opts(title_opts=opts.TitleOpts(title = '意大利新冠肺炎病患年龄分布'))
)
pic.render('test.html')
好了,到这来大功告成,运行python文件,最后会生成一个test.html。
用浏览器打开就可以欣赏做出来的的sankey图:
在这里插入图片描述
python 桑基图 地理坐标_【转载】Python数据可视化-实现Sankey桑基图相关推荐
- python 桑基图 地理坐标_利用Python+Excel制作桑基(Sankey)图
利用Python+Excel制作桑基(Sankey)图 桑基图的简介 桑基图 (Sankey Diagram),是一种特定类型的流图,用于描述一组值到另一组值的流向.下图为1869年,查尔斯米纳德( ...
- python 桑基图_数据可视化之 Sankey 桑基图的实现
什么是桑基图 Google 搜索桑基图,可以搜到一大堆定义.简而言之,桑基图是一种数据流图,展示了数据是如何从左到右流向最后的节点,每条边代表一条数据流,宽度代表数据流的大小.桑基图常用于流量分析,可 ...
- python解放二次开发_[转载]Python二次开发程序详解
###################################### ## Fundamentschwingungsstudie ## ## nur geeignet fuer ABAQUS ...
- python中读取文件编码_[转载]python中使用文件的读取编码问题
原文链接:https://www.cnblogs.com/qianboping/p/6524420.html 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都 ...
- python二级选择题及答案_转载 |python二级选择题与分析(6)
算法的时间复杂度是指 A 执行算法程序所需要的时间 B 算法程序的长度 C 算法程序中的指令条数 D 算法执行过程中所需要的基本运算次数 正确答案: D 下列关于栈的叙述中正确的是 A 在栈中只能插入 ...
- python收入波动告警分析_使用Python/Pandas分析告警日志数据
作者:吕磊 文章来自微信公众号:平台人生 Python Python是一种面向对象的解释型程序设计语言.作为一种脚本语言,Python在运行性能上相对C/C++等编译型语言有一定不足,但Python语 ...
- Python+Flask实现全国、全球疫情大数据可视化(二):网页页面布局+echarts可视化中国地图、世界地图、柱状图和折线图
文章目录 相关文章 一.实现效果 二.页面布局html+css main.html main.css 三.echarts图表制作 1.全国累计趋势折线图ec_l1.js 2.全国趋势变化折线图ec_l ...
- python数据分析是什么意思_选择python进行数据分析的理由和优势
1.python大量的库为数据分析提供了完整的工具集 2.比起MATLAB.R语言等其他主要用于数据分析语言,python语言功能更加健全 3.python库一直在增加,算法的实现采取的方法更加创新 ...
- python数据分析之连接MySQL数据库并进行数据可视化
大家好,我是带我去滑雪! 本期将熟悉MySQL数据库以及管理和操作MySQL数据库的数据库管理工具Navicat Premium,然后在python中调用MySQL数据库进行数据分析和数据可视化. 目 ...
最新文章
- 今天看到的如何做个坏男人的招数
- android自助终端界面_ZTHP500 | 桌面式人脸消费终端
- 使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
- 对一个存储过程语法的解读
- Jenkins集群搭建
- LABVIEW宝典(第2版)简版电子书出炉了,需要赶紧下
- windows7共享打印机无法连接0x00000bcb错误怎么解决
- Python 贪吃蛇小游戏
- 小米笔记安装双系统linux,小米笔记本电脑怎么安装双系统?-小米win7
- ERP项目学习(一)
- html5富文本编辑器菜鸟手册,富文本编辑器froalaEditor(全面)附教程
- leetcode 5724. 绝对差值和
- C++ 使用fdk-aac对音频编码
- 谷歌浏览器被2345主页强制绑定
- 【b503】篝火晚会
- art mac air 使用优盘安装windows7
- ios-破解ipa包中的png 图片
- 市面上常用的语音识别模块主要包含哪些组件?
- CSS_css sprite原理优缺点及使用
- jc机制是什么_单片机中jc指令表示什么?有什么用?