python制作桑基图_Python制作桑基图

这张图是不是十分的漂亮呢?今天偶然间看到一张十分炫酷的图,深深地被它妖艳炫酷的的外表所迷惑,查了许多资料之后,得知它叫“桑基图”。古人云:“桑吉桑吉,高贵美丽”,果然美丽啊,本人业余时间利用Python绘制了一个具体的实例。

1.桑基图的概念

桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。

2.基本特征

桑基图最明显的特征就是,始末端的分支宽度总和相等,即所有主支宽度的总和应与所有分出去的分支宽度的总和相等,保持能量的平衡。

3.制作工具以及数据准备

本文主要采用Python中的pandas库和 pyecharts库来作最基本的桑基图,数据的准备如下图所示:

4.代码

这里不再啰嗦,直接贴代码

import pandas as pd

from pyecharts.charts import Page,Sankey

from pyecharts import options as opts

# 读取csv文件

data = pd.read_csv(r'/home/apollo/Desktop/sample.csv',encoding = 'utf-8',header=None)

# print(data)

# 生成nodes = =[]

nodes = []

nodes.append({'name':'总支出'})

for i in data[0].unique():

dic = {}

dic['name'] = i

nodes.append(dic)

# 生成links

links = []

for i in data.values:

dic = {}

dic['source'] = i[0]

dic['target'] = i[1]

dic['value'] = i[2]

links.append(dic)

# 生成可视化结果

c = (

Sankey()

.add(

"费用/元",

nodes,

links,

linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source",type_="dotted"),

label_opts=opts.LabelOpts(position="right",),

)

.set_global_opts(title_opts=opts.TitleOpts(title="2019年生活支出一览"))

)

# 输出html可视化结果

c.render('result.html')

最后生成HTML格式的文件,用浏览器打开即可

5.结果展示

喜欢的朋友麻烦一键三连哦,有不当之处请随时打扰,有扰必回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值