饼图和圆环图是两种广泛用于展现整体中各类别比例分布的流行数据可视化工具。两者均可作为强大的沟通辅助手段,使观者能快速理解每个组成部分的重要性及其与全局的关系。
尽管饼图和圆环图有许多相似之处,但它们也各自具有独特的特点,使其适用于不同的分析场景。在本文中,您将学习如何使用 Spire.Presentation for Python 在 PowerPoint 中创建饼图或圆环图。
安装 Spire.Presentation for Python
本教程需要 Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Presentation
如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python
Python 在 PowerPoint 中创建饼图
饼图设计为圆形,被划分为若干个扇形或“切片”,每个切片代表整体的一部分。
使用 Spire.Presentation for Python,您可以通过调用 ISlide.Shapes.AppendChartInit(type: ChartType, rectangle: RectangleF, init: bool) 方法并在其中指定图表类型为 Pie,将饼图添加到演示文稿幻灯片中。以下是详细步骤:
- 创建 Presentation 类的对象。
- 使用 Prenstion.Slides[] 属性获取第一张幻灯片。
- 调用 Presentation.Slides[].Shapes.AppendChartInit(type:ChartType,rectangle:RectangleF,init:bool) 方法在幻灯片的指定位置上添加饼图。
- 设置图表标题及其样式。
- 定义一些数据,并通过 IChart.ChartData 属性将这些数据追加到图表工作表作为图表数据。
- 通过 IChart 类的属性设置系列标签、类别标签、系列值及其他属性。
- 设置显示标签值和百分比值。
- 使用 Presentation.SaveToFile() 方法保存文档。
- Python
from spire.presentation.common import *
from spire.presentation import *
# 创建一个Presentation对象
presentation = Presentation()
# 获取第一张幻灯片
slide = presentation.Slides[0]
# 添加饼图
rect = RectangleF.FromLTRB (40, 100, 590, 420)
chart = slide.Shapes.AppendChartInit (ChartType.Pie, rect, False)
# 设置图表标题
chart.ChartTitle.TextProperties.Text = "月消费"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 30
chart.HasTitle = True
# 定义数据
types = ["运动与健康", "医药", "电子游戏", "餐饮","衣物","旅行"]
costs = [800, 500, 1500, 2300,1200,1000]
# 将数据添加至ChartData(存储图表数据的数据表)
chart.ChartData[0,0].Text = "Types"
chart.ChartData[0,1].Text = "Costs"
i = 0
while i < len(types):
chart.ChartData[i + 1,0].Text = types[i]
chart.ChartData[i + 1,1].NumberValue = costs[i]
i += 1
# 设置系列标签和分类标签
chart.Series.SeriesLabel = chart.ChartData["B1","B1"]
chart.Categories.CategoryLabels = chart.ChartData["A2","A7"]
# 设置系列值
chart.Series[0].Values = chart.ChartData["B2","B7"]
# 向系列中添加数据点
for i, unusedItem in enumerate(chart.Series[0].Values):
cdp = ChartDataPoint(chart.Series[0])
cdp.Index = i
chart.Series[0].DataPoints.Add(cdp)
# 为每个数据点填充不同颜色
chart.Series[0].DataPoints[0].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[0].Fill.SolidColor.Color = Color.get_LightGray()
chart.Series[0].DataPoints[1].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[1].Fill.SolidColor.Color = Color.get_CadetBlue()
chart.Series[0].DataPoints[2].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[2].Fill.SolidColor.Color = Color.get_SkyBlue()
chart.Series[0].DataPoints[3].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[3].Fill.SolidColor.Color = Color.get_LightBlue()
chart.Series[0].DataPoints[4].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[4].Fill.SolidColor.Color = Color.get_LightGreen()
chart.Series[0].DataPoints[5].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[5].Fill.SolidColor.Color = Color.get_SeaGreen()
# 设置数据标签显示标签值和百分比值
chart.Series[0].DataLabels.LabelValueVisible = True
chart.Series[0].DataLabels.PercentValueVisible = True
# 保存结果文件
presentation.SaveToFile("饼图.pptx", FileFormat.Pptx2016)
# 释放资源
presentation.Dispose()
Python 在 PowerPoint 中创建圆环图
圆环图和饼图的主要区别在于中心存在一个“空洞”。这个空洞可以用来显示额外的信息,或者是为了保持更简洁的视觉效果。
若要在演示文稿幻灯片中添加一个圆环图,你可以将 ISlide.Shapes.AppendChartInit() 方法中的 ChartType 参数指定为 Doughnut。以下是具体的操作步骤。
- 创建 Presentation 类的对象。
- 使用 Prenstion.Slides[] 属性获取第一张幻灯片。
- 调用 Presentation.Slides[].Shapes.AppendChartInit(type:ChartType,rectangle:RectangleF,init:bool) 方法在幻灯片指定位置添加圆环图。
- 设置图表标题及其样式。
- 定义一些数据,并通过 IChart.ChartData 属性将这些数据追加到图表工作表作为图表数据。
- 通过 IChart 类的属性设置系列标签、类别标签、系列值及其他属性。
- 设置显示标签值和百分比值以及圆环图空洞大小。
- 使用 Presentation.SaveToFile() 方法保存文档。
- Python
from spire.presentation.common import *
from spire.presentation import *
# 创建一个Presentation对象
presentation = Presentation()
# 获取第一张幻灯片
slide = presentation.Slides[0]
# 添加饼图
rect = RectangleF.FromLTRB (40, 100, 590, 420)
chart = slide.Shapes.AppendChartInit (ChartType.Doughnut, rect, False)
# 设置图表标题
chart.ChartTitle.TextProperties.Text = "支出"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 30
chart.HasTitle = True
# 定义数据
types = ["四川分公司", "杭州分公司", "广州分公司", "重庆分公司"]
costs = [283923,834662,719287,338478]
# 将数据添加至ChartData(存储图表数据的数据表)
chart.ChartData[0,0].Text = "Cities"
chart.ChartData[0,1].Text = "Costs"
i = 0
while i < len(types):
chart.ChartData[i + 1,0].Text = types[i]
chart.ChartData[i + 1,1].NumberValue = costs[i]
i += 1
# 设置系列标签和分类标签
chart.Series.SeriesLabel = chart.ChartData["B1","B1"]
chart.Categories.CategoryLabels = chart.ChartData["A2","A5"]
# 设置系列值
chart.Series[0].Values = chart.ChartData["B2","B5"]
# 向系列中添加数据点
for i, unusedItem in enumerate(chart.Series[0].Values):
cdp = ChartDataPoint(chart.Series[0])
cdp.Index = i
chart.Series[0].DataPoints.Add(cdp)
# 为每个数据点填充不同颜色
chart.Series[0].DataPoints[0].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[0].Fill.SolidColor.Color = Color.get_LightGray()
chart.Series[0].DataPoints[1].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[1].Fill.SolidColor.Color = Color.get_CadetBlue()
chart.Series[0].DataPoints[2].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[2].Fill.SolidColor.Color = Color.get_SkyBlue()
chart.Series[0].DataPoints[3].Fill.FillType = FillFormatType.Solid
chart.Series[0].DataPoints[3].Fill.SolidColor.Color = Color.get_LightBlue()
# 设置数据标签显示标签值和百分比值
chart.Series[0].DataLabels.LabelValueVisible = True
chart.Series[0].DataLabels.PercentValueVisible=True
# 设置圆环图中间空洞大小
chart.Series[0].DoughnutHoleSize = 50
# 保存结果文件
presentation.SaveToFile("圆环图.pptx", FileFormat.Pptx2016)
# 释放资源
presentation.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。