桑基图调整大小

最近做项目需要做一个流量流向图,之前见过一种图,但是,死活不知道这个图叫啥,寻求多方帮助之后,才得知,原来叫桑基图。

呐,就是它
在这里插入图片描述

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

话不多说,直接开始,用Pyecharts绘制桑基图

环境

python 3.6 pyecharts 1.9.0

案例源码

数据量有点大就不展示数据了,直接展示画图的源码

nodes = []
for i in range(2):
    vales = df.iloc[:, i].unique()
    for value in vales:
        dic = {}
        dic['name'] = value
        nodes.append(dic)
print(nodes)
linkes=[]
for i in df.values:
    dic={}
    dic['source'] = i[0]
    dic['target'] = i[1]
    dic['value'] = i[2]
    linkes.append(dic)

pic = (Sankey().add(
        '',   #图例名称
        nodes,      #传入节点数据
        linkes,     #传入边和流量数据
        #设置透明度、弯曲度、颜色
        linestyle_opt=opts.LineStyleOpts(opacity=0.3, curve=0.5, color='source'),
        #标签显示位置
        label_opts=opts.LabelOpts(position='right'),
        #节点之间的距离
        node_gap=80,
    )
    .set_global_opts(title_opts=opts.TitleOpts(title='装卸流量流向图'))
)
pic.render('test.html')

在生成桑基图之后,可以直接打开,如果打开的是空白的,好像是要装个什么(具体有点忘记了),请自行百度解决,一搜就有。
但是当你的类分的比较多之后,会出现一个问题,所有的线和边都是一般大的。
在这里插入图片描述
这样丝毫体现不出数据的大小区别,尝试改变节点之间的距离,增大之后,会发现整个图就显示不全了,猜测是限定了画板的大小,但是,并没有找到可以更改画板大小的参数,就只能向源码下手了。
查看类Sankey部分的源码,可以发现,它只有一个add方法。从参数来看,这并不是我们要找的图表大小设置。
在这里插入图片描述
但是,类Sankey继承至类Chart,这个类有set_colors,set_series_opts等方法
在这里插入图片描述
除此外,它的初始化函数__init__中,接受参数init_opts,这个参数的默认值为opts.InitOpts()。再查看这个的源码。
在这里插入图片描述
然后就找到了我们想要调整的参数了,里面定义了画板的大小,因为我只需要画板的大小参数,就没有研究其他的参数,感兴趣或者有需求的可以自己去研究其他的参数。
接下来,将参数width、height放入代码中重新运行,查看是否可以更改画板的大小。

pic = (Sankey(
    init_opts=opts.InitOpts(
        width='1800px',
        height='2000px'
    )
).add(
        '',   #图例名称
        nodes,      #传入节点数据
        linkes,     #传入边和流量数据
        #设置透明度、弯曲度、颜色
        linestyle_opt=opts.LineStyleOpts(opacity=0.3, curve=0.5, color='source'),
        #标签显示位置
        label_opts=opts.LabelOpts(position='right'),
        #节点之间的距离
        node_gap=80,
    )
    .set_global_opts(title_opts=opts.TitleOpts(title='装卸流量流向图'))
)
pic.render('test.html')

运行发现整个桑基图都变大了,想要的结果已经出来了。
参考文章:https://blog.csdn.net/H_biubiu/article/details/105380326

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值