教你用Pyecharts画出好看桑葚图
首先介绍一下什么是桑葚图?
桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。
它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。
因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。
抓住桑葚图的核心定义,是主要用语表现一个数据流的过程。其实,我们熟悉的Matplotlib中也可以画出桑葚图,可是看起来是不是有那么一点点丑? 如下所示:
本篇使用另外一个常用的可视化库pyecharts来画图。
这里需要强调一下,pyecharts 分为v0.5.x 和 v1 两个大版本,并且两个版本是不兼容的。v 0.5.x 支持python2.7 和 3.4+ ,而v1 开始仅支持python 3.6+ ,在官方也分为两个不同的文档。
在网上对于v1 的资料和学习例子也非常多,本文就为还在使用v 0.5.x版本的同学,提供帮助。本篇之后的例子,使用v 0.5.x版本。官方文档
首先使用熟悉的pip进行安装
pip install pyecharts
然后我们可以对照着官方文档中的API介绍来学习,需要引入 Sankey。
核心参数不同,主要是对桑葚图的一些展示的配置。基本思路我总结大概有三步:
1. 先申明使用sankey
sankey = Sankey("桑基图示例", width=1200, height=600)
2. 使用add 添加对sankey图的配置信息
sankey.add("sankey",nodes=j["nodes"],links=j["links"],line_opacity=0.2,line_curve=0.5,line_color="source",is_label_show=True,label_pos="right",
)
这里需要注意,nodes和links是必须参数,相当于桑葚图中的结点和连接的边。需要传入一个List数据,内嵌字典数据格式,如下所示。这里的name、source、target和value都是固定的。
nodes = [{'name': 'category1'}, {'name': 'category2'}, {'name': 'category3'},{'name': 'category4'}, {'name': 'category5'}, {'name': 'category6'},
]links = [{'source': 'category1', 'target': 'category2', 'value': 10},{'source': 'category2', 'target': 'category3', 'value': 15},{'source': 'category3', 'target': 'category4', 'value': 20},{'source': 'category5', 'target': 'category6', 'value': 25}
]
3. 最后render生成html文件展示
sankey.render()
最后给大家分享一个小例子:
def sankey_analysis():nodes = [{'name':'Cluster 1'}, {'name':'Cluster 2'},{'name':'Cluster 3'},
{'name':'Young'},{'name':'Medium'},{'name':'Elder'}]result = np.array([[130,151,188],[735,462,670],[711,625,881]])targets = ['Young', 'Medium', 'Elder'] links = []for i in range(0,3):for j in range(0,3):sub_dict ={}sub_dict['source'] = 'Cluster '+str(i+1)sub_dict['target'] = targets[j]sub_dict['value'] = result[i,j]links.append(sub_dict)pic = (Sankey(name, width=1200, height=600).add('', nodes, links,sankey_node_width=80,sankey_node_gap=5, line_opacity=0.7,line_curve=0.5,line_color='source',is_label_show=True,is_random = True, label_text_size=14, label_pos="inside")) pic.render('sankey.html')
参考资料:
1. https://05x-docs.pyecharts.org/#/zh-cn/prepare
教你用Pyecharts画出好看桑葚图相关推荐
- 【python量化交易学习】从tushare获取股票交易数据,存入后再从mysql或excel读取数据,筛选股票,用pyecharts画出K线图。
选定日期,筛选涨幅达到10%的股票,并画出K线图.观察涨停后股票走势. 由于创业板涨停板为20%,科创板20%,北交所30%.因此筛选出的涨停股票不完全准确.考虑到目前市场打板主要集中在10%的主板股 ...
- 全国多地新冠病例0增长,教你用Python画出当下疫情最火玫瑰图!
CDA数据分析师 出品 近日,新冠肺炎防控成果的好消息不断. 今天我们聊聊,惊艳的疫情直观图. 据国家卫健委数据统计, 截止至3月10日24时,31省区市累计治愈出院病历超6万,达到61475例. 3 ...
- 用python turtle画龙猫_【跟着弹簧学画画】教你一步步画出一只超萌的龙猫来!...
原标题:[跟着弹簧学画画]教你一步步画出一只超萌的龙猫来! 龙猫,日文音译过来是豆豆龙,今天咱们就来画一个吧! 照旧先来感受下动态图↓ 1.先画耳朵,然后画出头部和身体,因为龙猫是圆滚滚的一只 画出胳 ...
- php 字体好看点,字丑不用怕,带你轻松画出好看字体!
Hi,我是秋小叶~ 在电子设备发达的今天,越来越少的人拿起笔写字.写字好看也成为了一项加分的技能,每每看到好看的字总是让人羡慕不已~ 而写字不好看的人,连自己都不愿意看到自己的字,也不喜欢记录,因此错 ...
- 樱花的季节,教大家用canvas画出飞舞的樱花树
又到了樱花的季节,教大家使用canvas画出飞舞的樱花树效果. 废话少说,先看效果. 演示效果地址:http://suohb.com/work/tree4.htm 查看演示效果 第一步,我们先画出一棵 ...
- 用python如何画出好看的地图
最近正好在学空间数据处理,这次更一下用python如何画出好看的地图 下面主要是用 folium poltly geopandas+matplotlib 三种方式绘制地图 1.folium impor ...
- 【论文写作】如何画出好看的图表
文章目录 前言 图表的作用 什么时候需要图表? 表格的技巧 技巧1 图的技巧 技巧1 技巧2 基于论文中的优秀图表案例,总结出一些规律 方法 规律总结 结论 参考文献 前言 创作开始时间:2021年1 ...
- java代码画樱花_樱花的季节,教大家用CANVAS画出飞舞的樱花树
又到了樱花的季节,教大家使用canvas画出飞舞的樱花树效果. 废话少说,先看效果. 演示效果地址:http://suohb.com/work/tree4.htm 第一步,我们先画出一棵树的主体. 我 ...
- java代码画樱花飘落_樱花的季节,教大家用canvas画出飞舞的樱花树
又到了樱花的季节,教大家使用canvas画出飞舞的樱花树效果. 废话少说,先看效果. 演示效果地址:http://suohb.com/work/tree4.htm 第一步,我们先画出一棵树的主体. 我 ...
最新文章
- java中继承和多态的实验,Java中的继承和多态
- 事务之五:Spring @Transactional工作原理
- ustc小道消息20211229
- python 中 feedparser的简单用法
- 盛松成:别死盯着M2不放,社会融资规模更能反映中国实际
- 用于CRUD和更多的模型驱动的RESTful API
- 2018-2019-1 20189204《Linux内核原理与分析》第一周作业
- linux下端口映射程序,Linux下端口映射工具
- U盘安装系统 从此告别光盘
- 编写测试用例方法之等价类划分法
- Problem C: 车牌限行
- 串口服务器通讯协议,串口服务器的组成和应用实例
- 每日单词20110605
- 人性深处的探究与还原-《少年派的奇幻漂流》的四个故事
- 11.8版本更新公告:灵罗娃娃 格温登场
- 公司企业常见部门名称英译(zt)
- 二零年的十一月开始 努力做个极简的人
- Ubuntu 20.04 桌面美化 iOS主题
- 韬韬抢苹果 #普及组#
- linux桌面环境日志,小白的Linux桌面环境的配置手记
热门文章
- Cocos Creator 3D 重磅更新,全面支持字节跳动!
- nd4j 向量_DL4J中文文档/ND4J/元素操作
- CSS使微信小程序 view文字水平垂直居中
- GPS定位:坐标系转换导致定位不准确的问题处理
- Centos6.8配置HTTPS
- Final Cut Pro中文新手教程 (一) 认识了解Final Cut Pro
- BZOJ1112 - [POI2008]砖块Klo
- android 自定义雷达图,Android自定义蛛网图(雷达图)
- ssm springboot网络订餐点餐跑腿系统java 小程序025
- 【英语四六级-必背单词】高中英语单词 (F)-MP3试听与下载