首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
引言:Python操作PPT
新建和保存PPT
打开PPT文档
ppt与pptx格式转换
设置长度单位
操作幻灯片
幻灯片布局
新建幻灯片
幻灯片位置
获取幻灯片
删除幻灯片
PPT中的形状介绍
获取形状
添加形状
形状填充色
形状边框
占位符介绍
获取占位符
占位符类型
填充占位符
操作文本介绍
获取文本框
添加文本框
添加文本
段落样式
Run样式
文本框样式
添加图表
柱状图
折线图
散点图
饼图
占位符图表
操作表格
插入表格
读取表格
占位符表格
表格对象
行列对象
访问单元格
单元格文本
单元格样式
合并单元格
拆分单元格
操作图片
当前位置:
首页>>
技术小册>>
Python与办公-玩转PPT
小册名称:Python与办公-玩转PPT
散点图就是在图表上画一些点,这些点的位置由它们的x、y坐标决定,先来简单看看python-pptx绘制散点图的方法吧。假设我们要画两组数据,每组数据就只有三个点,代码如下: ```bash from pptx import Presentation from pptx.chart.data import XyChartData from pptx.enum.chart import XL_CHART_TYPE from pptx.util import Cm ppt = Presentation() chart_data = XyChartData() series_1 = chart_data.add_series('系列1') series_1.add_data_point(0.7,2.7) series_1.add_data_point(1.8,3.2) series_1.add_data_point(2.6,0.8) series_2 = chart_data.add_series('系列2') series_2.add_data_point(1.3,3.7) series_2.add_data_point(2.7,2.3) series_2.add_data_point(1.6,1.8) slide = ppt.slides.add_slide(ppt.slide_layouts[6]) x = y = Cm(3) width = Cm(20) height = Cm(10) slide.shapes.add_chart( XL_CHART_TYPE.XY_SCATTER,x,y,width,height,chart_data ) ppt.save("./ppt_ files/test.pptx") ``` 散点图的数据与柱状图的不同,因为它只有x、y两个值,所以要实例化一个XyChartData对象去存储,调用它的add_series()方法新增一个系列,也就是一组数据,你有几组就调用几次。每个系列对象都是通过调用add_data_point()方法把点的x、y坐标添加进去,最后调用slide.shapes.add_chart()方法创建一个散点图,散点图的图表类型是XL_CHART_TYPE.XY_SCATTER,至于散点图的位置和宽高的设置方法就不用多说了,和柱状图的设置方法一致。 ![](/uploads/images/20231205/485fb03e052133bb0f0b59438febc24f.png) 我们不妨把之前的四个季度的不同类型产品销量也做成一个散点图,x轴是季度,y轴是销量,每一个分类都是一个系列,可以想想这代码应该怎么写,其实不难,就把上面的简单散点图的数据稍微改一下就行,自己思考之后再参考我的代码: ```bash from pptx import Presentation from pptx.chart.data import XyChartData from pptx.enum.chart import XL_CHART_TYPE from pptx.util import Cm ppt = Presentation() chart_data = XyChartData() sale_info = [ {"category":"数码娱乐","sale_volume":[36.6,21.1,15.9, 20.4]}, {"category":"生活用品","sale_volume":[65.5,52.1,22.3, 35.3]}, {"category":"文化用品","sale_volume":[10.0,3.1,9.8,3.2]}, ] for info in sale_info: series = chart_data.add_series(info.get("category")) for quarter,volume in enumerate(info.get("sale_volume")): series.add_data_point(quarter + 1,volume,number_ format='0"季度"') 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.XY_SCATTER,x,y,width,height,chart_data ).chart x_axis = chart.category_axis x_axis.has_title = True x_axis.axis_title.text_frame.text = "季度" y_axis = chart.value_axis y_axis.has_title = True y_axis.axis_title.text_frame.text = "销量" chart.has_legend = True ppt.save("./ppt_ files/test.pptx") ``` 为了方便读取数据,我把销售数据放在一个列表里,然后再通过遍历的方式读取每一个系列的数据,如果对遍历的写法已经熟悉了,那么应该是很容易看懂的。添加好散点图之后,再修改一下x、y坐标轴的标题,先获取坐标轴,然后把坐标轴的has_title属性设置为True,这样就可以显示标题了。标题的文本存储在axis_title属性里,访问该属性就能得到一个文本框,关于TextFrame对象,前面已经学习过了,这里就看你对它的熟悉程度了。 ![](/uploads/images/20231205/85ba4ab12cb1808dd01229b8552c4dcb.png)
上一篇:
折线图
下一篇:
饼图
该分类下的相关小册推荐:
Python机器学习基础教程(上)
剑指Python(磨刀不误砍柴工)
Python合辑3-字符串用法深度总结
Python数据分析与挖掘实战(上)
Python编程轻松进阶(一)
Python与办公-玩转PDF
Python爬虫入门与实战开发(上)
Python合辑10-函数
Python甚础Django与爬虫
Python编程轻松进阶(二)
Python合辑1-Python语言基础
Python合辑12-面向对象