Python+Echarts=Pyecharts 图表运用:嵌套饼图的自行创建、运用示例(含完整可运行源码)

我的系统环境不知道什么原因用不了Pyecharts1.0以上的版本(Python版本是3.6.5,各种模块调用失败),故只得使用0.5.11的版本。

在一次实例中需要用到一个父子关系及其在相应类别中比例的展示,日落图(Sunburst)显然是一个比较适合的图表。

然而,官方文档表示:

version 1.1.0 - 2019.5.14

Add

 也就是说,Sunburst这个图表类型是在1.1.0这个版本中才加入的,0.5.11不能使用。无奈,因为也就是性别和婚姻的情况,如果用柱状图的stack会显得比较单调,最后是采用了:饼图嵌套

我所谓的饼图嵌套是指:在一个pie=Pie( ) 中,同时创建多个pie.add( ),因为饼图是支持对多个图形进行center[x,y]定位的,所以你可以创建多个图表项,然后设定他们的圆心坐标相同,比如默认都是[50,50],然后设置不同图形的半径范围不同。例如最里的图radius=[5,15],次圈为radius=[20,30],其中15-20的5的单位的空白即是两个饼图的间隙(留白),最后得到的效果就是一个嵌套的图形。

当然,Echarts官网给出的“饼图嵌套”是更好的,它能继承父子的关系(也就是在我这个现在这个饼图中(下例)可以实现:男性婚姻情况可以只对应更里层的男性),当然了,也许用我这样的方法通过调整相关参数也可以实现Echarts官方“饼图嵌套”的效果,但因为我的这个解决方案已经满足我的需求了所以就没暂时没有深究。

Echarts“饼图嵌套示例”:https://echarts.baidu.com/examples/editor.html?c=pie-nest

 

 

我的效果示例:

 

 

代码也附上:

from pyecharts import Pie
a1 = ["男性", "女性"]
v1 = [459,66]

a11=["已婚员工","未婚员工"]
v11=[336,189]

a21=["男-已婚","男-未婚"]
v21=[285,174]     
     
a22=["女-已婚","女-未婚"]
v22=[51,15]
pie= Pie('Pycharts饼图嵌套示例','示例',title_pos='center',title_text_size=20,subtitle_color= '#000',subtitle_text_size=16,height=500)

pie.add('', a1, v1, center=[50,55],radius=[5,20],is_random=True,
        is_label_show=True,label_text_size=13,label_pos='bottom',
        legend_pos='left',is_more_utils=True,rosetype='radius'
        ,label_emphasis_pos='top',label_emphasis_textcolor='',label_emphasis_textsize=30
)


pie.add('',a11, v11, center=[50,55],radius=[25,40] ,
        is_label_show=True,label_text_size=13,label_pos='top',
        legend_pos='left',rosetype='radius',label_emphasis_pos='top'
        ,label_emphasis_textcolor='',label_emphasis_textsize=30
)

pie.add('',a21, v21, center=[50,55],radius=[45,60] ,label_pos='right',
        is_label_show=True,label_text_size=13,legend_pos='left',rosetype='radius'
,label_emphasis_pos='top',label_emphasis_textcolor='',label_emphasis_textsize=30)


pie.add('',a22, v22,center=[50,55], radius=[65,80] ,label_pos='left',
        is_label_show=True,label_text_size=13,
        legend_pos='left',legend_top='center',rosetype='radius',legend_orient="vertical"
       ,label_emphasis_pos='top',label_emphasis_textcolor='',label_emphasis_textsize=30)


pie.render()

至于里面的参数,查一下也就知道了。这里附上Pyecharts的0.5+版本的官方文档,相关参数可以参阅:https://05x-docs.pyecharts.org/#/

对了,rosetype的类型也可以改为'area',然而效果不好,有兴趣的可以自己试一试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值