Python数据可视化Pyecharts库实现桑葚图效果

作者:麦片加奶不加糖 时间:2022-01-05 23:39:44 

首先介绍一下什么是桑葚图?

桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。

它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。

因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。

抓住桑葚图的核心定义,是主要用语表现一个数据流的过程。其实,我们熟悉的Matplotlib中也可以画出桑葚图,可是看起来是不是有那么一点点丑? 如下所示:

Python数据可视化Pyecharts库实现桑葚图效果

本篇使用另外一个常用的可视化库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。

Python数据可视化Pyecharts库实现桑葚图效果

核心参数不同,主要是对桑葚图的一些展示的配置。

基本思路我总结大概有三步:

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')

Python数据可视化Pyecharts库实现桑葚图效果

参考资料:

1. https://05x-docs.pyecharts.org/#/zh-cn/prepare

来源:https://blog.csdn.net/sinat_23133783/article/details/112979067

标签:数据可视化,pyecharts,桑葚图
0
投稿

猜你喜欢

  • Oracle 数据 使用游标

    2009-07-02 12:14:00
  • Oracle字符集修改查看方法

    2009-11-05 21:45:00
  • OpenCV2.3.1+Python2.7.3+Numpy等的配置解析

    2021-12-09 16:04:57
  • 蚁群算法js版

    2008-10-08 10:15:00
  • 8行代码实现Python文件去重

    2023-11-20 14:47:35
  • numpy数组之存取文件的实现示例

    2021-02-20 11:32:57
  • Python类和对象基础入门介绍

    2022-04-03 12:14:48
  • Hello! 404

    2010-09-06 13:37:00
  • python框架django项目部署相关知识详解

    2023-10-26 02:26:15
  • 用户凭什么跟你注册?

    2011-06-10 13:16:00
  • python从入门到实践之字典

    2023-05-11 22:20:17
  • Python 如何创建一个简单的REST接口

    2022-03-07 17:03:16
  • Oracle CBO 的 _sort_elimination_cost_ratio 参数

    2008-07-22 12:24:00
  • python 合并多个excel中同名的sheet

    2023-06-06 08:34:27
  • laravel 解决crontab不执行的问题

    2023-11-15 01:45:18
  • MySQL数据库磁盘优化

    2008-11-24 17:29:00
  • MySQL应用技巧之内存使用线程独享

    2010-08-08 08:33:00
  • Python爬虫简单运用爬取代理IP的实现

    2021-08-25 23:26:42
  • Windows平台Python编程必会模块之pywin32介绍

    2023-11-05 10:45:35
  • python和flask中返回JSON数据的方法

    2023-07-31 02:43:17
  • asp之家 网络编程 m.aspxhome.com