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

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

教你用Pyecharts画出好看桑葚图相关推荐

  1. 【python量化交易学习】从tushare获取股票交易数据,存入后再从mysql或excel读取数据,筛选股票,用pyecharts画出K线图。

    选定日期,筛选涨幅达到10%的股票,并画出K线图.观察涨停后股票走势. 由于创业板涨停板为20%,科创板20%,北交所30%.因此筛选出的涨停股票不完全准确.考虑到目前市场打板主要集中在10%的主板股 ...

  2. 全国多地新冠病例0增长,教你用Python画出当下疫情最火玫瑰图!

    CDA数据分析师 出品 近日,新冠肺炎防控成果的好消息不断. 今天我们聊聊,惊艳的疫情直观图. 据国家卫健委数据统计, 截止至3月10日24时,31省区市累计治愈出院病历超6万,达到61475例. 3 ...

  3. 用python turtle画龙猫_【跟着弹簧学画画】教你一步步画出一只超萌的龙猫来!...

    原标题:[跟着弹簧学画画]教你一步步画出一只超萌的龙猫来! 龙猫,日文音译过来是豆豆龙,今天咱们就来画一个吧! 照旧先来感受下动态图↓ 1.先画耳朵,然后画出头部和身体,因为龙猫是圆滚滚的一只 画出胳 ...

  4. php 字体好看点,字丑不用怕,带你轻松画出好看字体!

    Hi,我是秋小叶~ 在电子设备发达的今天,越来越少的人拿起笔写字.写字好看也成为了一项加分的技能,每每看到好看的字总是让人羡慕不已~ 而写字不好看的人,连自己都不愿意看到自己的字,也不喜欢记录,因此错 ...

  5. 樱花的季节,教大家用canvas画出飞舞的樱花树

    又到了樱花的季节,教大家使用canvas画出飞舞的樱花树效果. 废话少说,先看效果. 演示效果地址:http://suohb.com/work/tree4.htm 查看演示效果 第一步,我们先画出一棵 ...

  6. 用python如何画出好看的地图

    最近正好在学空间数据处理,这次更一下用python如何画出好看的地图 下面主要是用 folium poltly geopandas+matplotlib 三种方式绘制地图 1.folium impor ...

  7. 【论文写作】如何画出好看的图表

    文章目录 前言 图表的作用 什么时候需要图表? 表格的技巧 技巧1 图的技巧 技巧1 技巧2 基于论文中的优秀图表案例,总结出一些规律 方法 规律总结 结论 参考文献 前言 创作开始时间:2021年1 ...

  8. java代码画樱花_樱花的季节,教大家用CANVAS画出飞舞的樱花树

    又到了樱花的季节,教大家使用canvas画出飞舞的樱花树效果. 废话少说,先看效果. 演示效果地址:http://suohb.com/work/tree4.htm 第一步,我们先画出一棵树的主体. 我 ...

  9. java代码画樱花飘落_樱花的季节,教大家用canvas画出飞舞的樱花树

    又到了樱花的季节,教大家使用canvas画出飞舞的樱花树效果. 废话少说,先看效果. 演示效果地址:http://suohb.com/work/tree4.htm 第一步,我们先画出一棵树的主体. 我 ...

最新文章

  1. java中继承和多态的实验,Java中的继承和多态
  2. 事务之五:Spring @Transactional工作原理
  3. ustc小道消息20211229
  4. python 中 feedparser的简单用法
  5. 盛松成:别死盯着M2不放,社会融资规模更能反映中国实际
  6. 用于CRUD和更多的模型驱动的RESTful API
  7. 2018-2019-1 20189204《Linux内核原理与分析》第一周作业
  8. linux下端口映射程序,Linux下端口映射工具
  9. U盘安装系统 从此告别光盘
  10. 编写测试用例方法之等价类划分法
  11. Problem C: 车牌限行
  12. 串口服务器通讯协议,串口服务器的组成和应用实例
  13. 每日单词20110605
  14. 人性深处的探究与还原-《少年派的奇幻漂流》的四个故事
  15. 11.8版本更新公告:灵罗娃娃 格温登场
  16. 公司企业常见部门名称英译(zt)
  17. 二零年的十一月开始 努力做个极简的人
  18. Ubuntu 20.04 桌面美化 iOS主题
  19. 韬韬抢苹果 #普及组#
  20. linux桌面环境日志,小白的Linux桌面环境的配置手记

热门文章

  1. Cocos Creator 3D 重磅更新,全面支持字节跳动!
  2. nd4j 向量_DL4J中文文档/ND4J/元素操作
  3. CSS使微信小程序 view文字水平垂直居中
  4. GPS定位:坐标系转换导致定位不准确的问题处理
  5. Centos6.8配置HTTPS
  6. Final Cut Pro中文新手教程 (一) 认识了解Final Cut Pro
  7. BZOJ1112 - [POI2008]砖块Klo
  8. android 自定义雷达图,Android自定义蛛网图(雷达图)
  9. ssm springboot网络订餐点餐跑腿系统java 小程序025
  10. 【英语四六级-必背单词】高中英语单词 (F)-MP3试听与下载