使用 Python 在演示文稿中管理图表数据标记
Contents
[
Hide
]
概述
本文说明了如何在 Aspose.Slides 中使用图表数据标记。它展示了如何创建图表、访问系列及其数据点、在数据点级别为标记应用图片填充、调整标记大小以及保存更新后的演示文稿。文中还指出,标准标记形状可通过 MarkerStyleType 枚举获得,并且在将图表导出为光栅格式或 SVG 时,标记外观会被保留。
设置图表标记选项
可以在特定系列的图表数据点上设置标记。要设置图表标记选项,请按以下步骤操作:
- 实例化 Presentation 类。
- 创建默认图表。
- 设置图片。
- 访问第一个图表系列。
- 添加新数据点。
- 将演示文稿写入磁盘。
以下示例在数据点级别设置图表标记选项。
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, FillType, Presentation, SaveFormat
# 创建一个空的演示文稿。
presentation = Presentation()
try:
# 访问第一张幻灯片
slide = presentation.getSlides().get_Item(0)
# 创建默认图表
chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 0, 0, 400, 400)
# 获取默认图表数据工作表索引。
default_worksheet_index = 0
# 获取图表数据工作簿。
workbook = chart.getChartData().getChartDataWorkbook()
# 删除示例系列
chart.getChartData().getSeries().clear()
# 添加新系列
series_name_cell = workbook.getCell(default_worksheet_index, 1, 1, "Series 1")
chart.getChartData().getSeries().add(series_name_cell, chart.getType())
# 加载第一张图片。
desert_bytes = Path("Desert.jpg").read_bytes()
desert_image = presentation.getImages().addImage(jpype.JArray(jpype.JByte)(desert_bytes))
# 加载第二张图片。
tulips_bytes = Path("Tulips.jpg").read_bytes()
tulips_image = presentation.getImages().addImage(jpype.JArray(jpype.JByte)(tulips_bytes))
# 访问第一个图表系列。
series = chart.getChartData().getSeries().get_Item(0)
# 添加数据点。
value_cell = workbook.getCell(default_worksheet_index, 1, 1, 4.5)
point = series.getDataPoints().addDataPointForLineSeries(value_cell)
point.getMarker().getFormat().getFill().setFillType(FillType.Picture)
point.getMarker().getFormat().getFill().getPictureFillFormat().getPicture().setImage(desert_image)
value_cell = workbook.getCell(default_worksheet_index, 2, 1, 2.5)
point = series.getDataPoints().addDataPointForLineSeries(value_cell)
point.getMarker().getFormat().getFill().setFillType(FillType.Picture)
point.getMarker().getFormat().getFill().getPictureFillFormat().getPicture().setImage(tulips_image)
value_cell = workbook.getCell(default_worksheet_index, 3, 1, 3.5)
point = series.getDataPoints().addDataPointForLineSeries(value_cell)
point.getMarker().getFormat().getFill().setFillType(FillType.Picture)
point.getMarker().getFormat().getFill().getPictureFillFormat().getPicture().setImage(desert_image)
value_cell = workbook.getCell(default_worksheet_index, 4, 1, 4.5)
point = series.getDataPoints().addDataPointForLineSeries(value_cell)
point.getMarker().getFormat().getFill().setFillType(FillType.Picture)
point.getMarker().getFormat().getFill().getPictureFillFormat().getPicture().setImage(tulips_image)
# 更改图表系列标记大小。
series.getMarker().setSize(15)
# 保存带有图表的演示文稿
presentation.save("MarkOptions_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
常见问题
默认提供了哪些标记形状?
提供标准形状(圆形、方形、菱形、三角形等);列表由 MarkerStyleType 类定义。如果需要非标准形状,可使用带图片填充的标记来模拟自定义视觉效果。
在将图表导出为图像或 SVG 时,标记会被保留吗?
会的。将图表渲染为 光栅格式 或保存 将形状保存为 SVG 时,标记会保留其外观和设置,包括大小、填充和轮廓。