java学习视频 Springboot java js快速排序 Mxnet 希腊字母 jsp ruby magento stl pmp视频 mysql批量更新数据 linux 获取系统时间 查看mysql密码 oracle分析函数 python下载安装教程 python位操作 javaqueue java编程实例 java教材 java方法重载 如何安装java环境 java定义接口 java中的集合 java获取 java接口实例 java怎么输出数组 liunx命令大全 js删除数组指定元素 js倒计时代码 eml文件阅读器下载 在线手册 全英雄守城战 凤凰刷机 上传附件 安卓adb kmplayer绿色版 ps高手教程 pp安卓助手 hdcp是什么
当前位置: 首页 > 学习教程  > 编程学习

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

2021/1/9 2:17:02 文章标签: 复合条饼图

我的系统环境不知道什么原因用不了Pyecharts1.0以上的版本(Python版本是3.6.5,各种模块调用失败),故只得使用0.5.11的版本。 在一次实例中需要用到一个父子关系及其在相应类别中比例的展示,日落图(Sunburs…

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

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

然而,官方文档表示:

version 1.1.0 - 2019.5.14

Add

  • issue#1052,issue#1065 新增 BMap 图形种类
  • issue#1078,issue#396 新增 Sunburst 图形种类
  • issue#1112 Page 类新增 render_embed 方法
  • ···

 也就是说,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',然而效果不好,有兴趣的可以自己试一试。


本文链接: http://www.dtmao.cc/news_show_1100424.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?