脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python数据可视化Pyecharts库实现桑葚图效果

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

2022-01-17 10:11麦片加奶不加糖 Python

这篇文章主要介绍了Python数据可视化如何使用Pyecharts库来实现桑葚图效果图,文中给出实现的示例代码,有需要的朋友可以借鉴参考想,希望能够有所帮助

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

桑基图(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

以上就是Python数据可视化Pyecharts库实现桑葚图效果的详细内容,更多关于Pyecharts库实现桑葚图的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/sinat_23133783/article/details/112979067

延伸 · 阅读

精彩推荐