文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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

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

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯