Python数据可视化Pyecharts库实现桑葚图效果
作者:麦片加奶不加糖 发布时间:2022-01-05 23:39:44
首先介绍一下什么是桑葚图?
桑基图(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
来源:https://blog.csdn.net/sinat_23133783/article/details/112979067


猜你喜欢
- 1、介绍在爬虫中经常会遇到验证码识别的问题,现在的验证码大多分计算验证码、滑块验证码、识图验证码、语音验证码等四种。本文就是识图验证码,识别
- 最近在做一个游戏数据统计后台,最基础的功能是通过分析注册登录日志来展示用户数据。在公司内部测试,用户量很少,所以就没有发现什么性能问题。但是
- 本文实例讲述了python实现的简单窗口倒计时界面。分享给大家供大家参考。具体分析如下:下面的代码通过Tkinter制作windows窗口界
- 本文实例为大家分享了python多线程下信号处理程序示例的具体代码,供大家参考,具体内容如下下面是一个网上转载的实现思路,经过验证,发现是可
- 一、条件判断 if ( ) { } elsif ( ) {&nb
- 一、使用SQL Server全文搜索配置要使用SQL Server的全文搜索服务,需要进行如下配置。1、开启全文搜索服务:2、开启数据库的全
- FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, Op
- 在计算loss的时候,最常见的一句话就是tf.nn.softmax_cross_entropy_with_logits,那么它到底是怎么做的
- 通过exec可以执行动态Python代码,类似Javascript的eval功能;而Python中的eval函数可以计算Python表达式,
- 如果您还不太了解XML技术,您可以先看看此文:XML的语法、结构以及相关的一些技术 及 XML DOM介绍和例子XML中 CDATA的作用:
- 前言常见的通知方式有:邮件,电话,短信,微信。短信和电话:通常是收费的,较少使用;邮件:适合带文件类型的通知,较正式,存档使用;微信:适合告
- 1、Tkinter是什么Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口&
- SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个
- 1、Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可
- 在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下:subplo
- 说明: a、以下字符中数据库名forum,数据库服务器名WWW-2443D34E558\SQL2005(或者127.0.0.1) b、查看s
- 前面我们已经介绍了速度动画、透明度动画、多物体运动和任意值变化,并且我们在Javascript动画效果(二)中介绍到我们封装了一个简单的插件
- 如何在PyCharm中安装PaddlePaddle?1.基本环境Python:3.8.5PyCharm:COMMUNITY 2019.32.
- 用python实现的抓取腾讯视频所有电影的爬虫# -*- coding: utf-8 -*-import reimport urllib2f
- 升级了浏览器到IE9,今天进入公司网站后台突然发现有些页面进不去了,F12调试显示有JS错误:DOM Exception: INVALID_