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
投稿

猜你喜欢

  • pytorch中的weight-initilzation用法

    2022-03-22 23:28:24
  • 详解MySQL数据库中字符串的正确使用

    2010-06-20 15:01:00
  • python打开url并按指定块读取网页内容的方法

    2023-07-07 11:00:36
  • vue+echarts封装气泡图的方法

    2024-05-09 15:09:45
  • Python base64编码解码实例

    2022-06-11 07:08:27
  • 搜索关键字加亮js实现方法

    2007-08-27 14:11:00
  • Element el-date-picker 日期选择器的使用

    2024-05-09 15:09:08
  • Python基础知识+结构+数据类型

    2021-03-11 12:55:33
  • Symfony2框架学习笔记之HTTP Cache用法详解

    2024-03-26 23:39:12
  • Numpy中如何创建矩阵并等间隔抽取数据

    2023-01-14 16:21:16
  • python 5个实用的技巧

    2022-12-23 14:17:05
  • 如何编写TOP10之类的排行榜?

    2009-11-07 18:45:00
  • Python小程序之在图片上加入数字的代码

    2023-11-14 08:26:48
  • PHP header()函数使用详细(301、404等错误设置)

    2023-11-02 17:28:23
  • MySQL性能优化之如何高效正确的使用索引

    2024-01-25 11:51:32
  • 在pycharm中使用matplotlib.pyplot 绘图时报错的解决

    2021-05-22 10:37:31
  • python计算最小优先级队列代码分享

    2022-12-05 03:26:50
  • Vue3 计算属性的用法详解

    2024-04-28 09:20:33
  • 详解webpack编译速度提升之DllPlugin

    2024-02-23 20:57:10
  • OpenCV 图像梯度的实现方法

    2023-07-14 08:25:43
  • asp之家 网络编程 m.aspxhome.com