首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
引言:Python操作PPT
新建和保存PPT
打开PPT文档
ppt与pptx格式转换
设置长度单位
操作幻灯片
幻灯片布局
新建幻灯片
幻灯片位置
获取幻灯片
删除幻灯片
PPT中的形状介绍
获取形状
添加形状
形状填充色
形状边框
占位符介绍
获取占位符
占位符类型
填充占位符
操作文本介绍
获取文本框
添加文本框
添加文本
段落样式
Run样式
文本框样式
添加图表
柱状图
折线图
散点图
饼图
占位符图表
操作表格
插入表格
读取表格
占位符表格
表格对象
行列对象
访问单元格
单元格文本
单元格样式
合并单元格
拆分单元格
操作图片
当前位置:
首页>>
技术小册>>
Python与办公-玩转PPT
小册名称:Python与办公-玩转PPT
饼图就是把一个圆按照数据的比例划分成若干部分,大家应该都见过。饼图的形状类型是XL_CHART_TYPE.PIE,所以根据前面的画图经验,创建一个ChartData然后把数据添加进去,应该就能得到饼图了,看起来好像不是很难,代码如下: ```bash from pptx import Presentation from pptx.chart.data import ChartData from pptx.enum.chart import XL_CHART_TYPE from pptx.util import Cm chart_data = ChartData() chart_data.categories = ['Q1','Q2','Q3','Q4'] sale_volume = [36.6,21.1,15.9,20.4] chart_data.add_series('数码娱乐',sale_volume) ppt = Presentation() slide = ppt.slides.add_slide(ppt.slide_layouts[6]) x = y = Cm(3) width = Cm(20) height = Cm(10) chart = slide.shapes.add_chart( XL_CHART_TYPE.PIE,x,y,width,height,chart_data ).chart ppt.save("./ppt_ files/test.pptx") ``` 果然不是很难,执行代码之后确实可以得到一个饼图,得到的饼图如图8-9所示。 ![](/uploads/images/20231205/114826d1bc4f515bab913189ff63b337.png) 不过这个饼图确实简单得过分了,除了知道它是一个被分成四份的饼图,其他信息都没有,所以我们还需要改进,至少要把图例显示出来吧,另外我们还可以把每个部分的占比情况给显示出来,代码如下: ```bash from pptx import Presentation from pptx.chart.data import ChartData from pptx.enum.chart import XL_CHART_TYPE,XL_LEGEND_POSITION from pptx.enum.chart import XL_DATA_LABEL_POSITION from pptx.util import Cm chart_data = ChartData() chart_data.categories = ['Q1','Q2','Q3','Q4'] sale_volume = [36.6,21.1,15.9,20.4] percent = [volume / sum(sale_volume) for volume in sale_volume] print(percent) # 输出:[0.3893617021276596,0.224468085106383,0.16914893617021276, 0.21702127659574466] chart_data.add_series('数码娱乐',percent) ppt = Presentation() slide = ppt.slides.add_slide(ppt.slide_layouts[6]) x = y = Cm(3) width = Cm(20) height = Cm(10) chart = slide.shapes.add_chart( XL_CHART_TYPE.PIE,x,y,width,height,chart_data ).chart chart.has_legend = True chart.legend.position = XL_LEGEND_POSITION.BOTTOM chart.plots[0].has_data_labels = True data_labels = chart.plots[0].data_labels data_labels.number_format = '0%' data_labels.position = XL_DATA_LABEL_POSITION.OUTSIDE_END ppt.save("./ppt_ files/test.pptx") ``` 我们已经会了图例的设置,只要把Chart对象的has_legend属性改为True就行了,关键是还需要特别学一下显示饼图的百分比。首先,我们要提前算好数据的比例,添加系列的时候我们就传入算好的百分比而不是原始数据,因为饼图本来就是按照百分比显示的,所以我们把数据变成百分比之后显示的饼图比例是不会发生变化的。 饼图其实是一个PiePlot对象,我们通过chart对象的plots[0]拿到第一个PiePlot对象(本例中只有一个),先把PiePlot对象的has_data_labels属性改为True,它控制是否显示数据标签,然后再访问PiePlot对象的data_labels属性获取到数据标签,然后调用数据标签的number_format属性修改数据的显示格式,调用数据标签的position属性修改位置。上面代码的最后效果如图8-10所示。 ![](/uploads/images/20231205/4aa679840f1483c9dba80a9b5f989ae1.png)
上一篇:
散点图
下一篇:
占位符图表
该分类下的相关小册推荐:
剑指Python(万变不离其宗)
Python合辑2-字符串常用方法
Python高性能编程与实战
Python合辑8-变量和运算符
Python合辑10-函数
Python与办公-玩转PDF
机器学习算法原理与实战
Python爬虫入门与实战开发(上)
Python合辑13-面向对象编程案例(上)
Python3网络爬虫开发实战(下)
Python合辑14-面向对象编程案例(下)
Python数据分析与挖掘实战(下)