Python如何绘制桑基图

发布时间:2021-09-24 11:14:38 作者:小新
来源:亿速云 阅读:171

小编给大家分享一下Python如何绘制桑基图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

前言

桑基图亦称为桑基能量分流图、桑基能量平衡图,是一种特定类型的流程图,用于展示数据的“流动”变化。桑基图中包含若干条从左到右延展的分支,每条分支的宽度代表数据流量的大小。

题目再现

假设现在小明家日常生活的开支主要分为工资、副业、生活、购物、深造、运动、其他和买书几类,且其中每项投入或产出值分别为0.7、0.3、-0.3、-0.1、-0.3、-0.1、-0.1、-0.1,请结合这些日常生活开支的数据绘制一个桑基图

Python如何绘制桑基图

题目拆解

我们需要绘画出桑基图,首先知道创建桑基图的类.matplotlib.sankey模块中专门提拱了表示桑基图的类Sankey,通过创建Sankey类的对象可以创建桑基图,之后可以调用add()方法为桑基图添加一些配置选项,最后调用finish()方法完成桑基图的绘制.

创建桑基图

Sankey(ax=None, scale=1.0,unit='',format='%G',gap=0.25,radius=0.1,shoulder=0.03,
offset=0.15,head_angle=100,margin=0.4,tolerance=1e-06,**kwargs)

常用函数参数如下:

添加桑基图选项

Sankey类对象可以调用add()方法为桑基图添加数据流量、标签等选项

add(self,patchlabel='',flows=None,orientations=None,labels='',
trunklength=1.0, pathlengths=0.25,prior=None,connect=(0,0),
rotation=0,**kwargs)

常用参数如下:

返回桑基图绘制完成的对象

Sankey类对象在添加数据之后需要调用finish()方法完成绘制,并返回包含多个桑基子图列表,桑基子图包含以下字段.

3.完整源码

if __name__ == '__main__':
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib.sankey import Sankey

    plt.rcParams['font.sans-serif'] = 'SimHei'
    plt.rcParams['axes.unicode_minus'] = False

    # 消费收入与支出数据
    flows = [0.7, 0.3,-0.3,-0.1,-0.3,-0.1,-0.1,-0.1]
    # 流的标签列表
    labels = ["工资","副业","生活","购物","深造","运动","其他","买书"]
    # 流的方向
    orientations = [1,1,0,-1,1,-1,1,0]
    # 创建Sankey类对象
    sankey = Sankey()
    sankey.add(flows=flows, # 收入与支出数据
               labels = labels, # 数据标签
               orientations = orientations, # 标签显示的方向
               color='black', # 边缘线条颜色
               fc="lightgreen", # 填充颜色
                patchlabel="生活消费", # 图表中国心的标签
               alpha=0.7)

    # 桑基图绘制完成的对象
    diagrams = sankey.finish()
    diagrams[0].texts[4].set_color("r")   # 将下标为4的数据标签设为红色
    diagrams[0].texts[4].set_weight("bold") # 将下标为4的数据标签设为字体标签
    diagrams[0].text.set_fontsize(20)     # 将中心标签的字体大小设为20
    diagrams[0].text.set_fontweight("bold") # 将中心标签的字体设为加粗
    plt.title('日常生活开支的桑基图')
    plt.show()

以上是“Python如何绘制桑基图”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. 如何使用Python绘制漫步图
  2. python如何绘制彩虹图

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:如何实现DELETE语句

下一篇:SQL注入式攻击的本质是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》