在 Python 中优化演示文稿的图表计算

计算图表元素的实际值

Aspose.Slides for Python via .NET 提供了一个简易的 API 用于获取这些属性。这将帮助您计算图表元素的实际值。实际值包括实现 IActualLayout 接口的元素的位置(IActualLayout.ActualX、IActualLayout.ActualY、IActualLayout.ActualWidth、IActualLayout.ActualHeight)以及实际轴值(IAxis.ActualMaxValue、IAxis.ActualMinValue、IAxis.ActualMajorUnit、IAxis.ActualMinorUnit、IAxis.ActualMajorUnitScale、IAxis.ActualMinorUnitScale)。

import aspose.slides.charts as charts
import aspose.slides as slides

with slides.Presentation("pres.pptx") as pres:
    chart = pres.slides[0].shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 100, 100, 500, 350)
    chart.validate_chart_layout()

    maxValue = chart.axes.vertical_axis.actual_max_value
    minValue = chart.axes.vertical_axis.actual_min_value
    majorUnit = chart.axes.horizontal_axis.actual_major_unit
    minorUnit = chart.axes.horizontal_axis.actual_minor_unit

计算父图表元素的实际位置

Aspose.Slides for Python via .NET 提供了一个简易的 API 用于获取这些属性。IActualLayout 的属性提供了父图表元素实际位置的信息。必须先调用 IChart.ValidateChartLayout() 方法以用实际值填充这些属性。

import aspose.slides.charts as charts
import aspose.slides as slides

with slides.Presentation("pres.pptx") as pres:
    chart = pres.slides[0].shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 100, 100, 500, 350)
    chart.validate_chart_layout()

    x = chart.plot_area.actual_x
    y = chart.plot_area.actual_y
    w = chart.plot_area.actual_width
    h = chart.plot_area.actual_height

隐藏图表信息

本主题帮助您了解如何隐藏图表信息。使用 Aspose.Slides for Python via .NET,您可以隐藏图表中的 标题、垂直轴、水平轴网格线。下面的代码示例展示了如何使用这些属性。

import aspose.slides.charts as charts
import aspose.slides as slides

with slides.Presentation() as pres:
    slide = pres.slides[0]
    chart = slide.shapes.add_chart(charts.ChartType.LINE_WITH_MARKERS, 140, 118, 320, 370)

    # 隐藏图表标题
    chart.has_title = False

    # 隐藏数值轴
    chart.axes.vertical_axis.is_visible = False

    # 分类轴可见性
    chart.axes.horizontal_axis.is_visible = False

    # 隐藏图例
    chart.has_legend = False

    # 隐藏主网格线
    chart.axes.horizontal_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL

    #for i in range(len(chart.chart_data.series)):
    #    chart.chart_data.series.remove_at(i)

    series = chart.chart_data.series[0]

    series.marker.symbol = charts.MarkerStyleType.CIRCLE
    series.labels.default_data_label_format.show_value = True
    series.labels.default_data_label_format.position = charts.LegendDataLabelPosition.TOP
    series.marker.size = 15

    # 设置系列线条颜色
    series.format.line.fill_format.fill_type = slides.FillType.SOLID
    series.format.line.fill_format.solid_fill_color.color = draw.Color.purple
    series.format.line.dash_style = slides.LineDashStyle.SOLID

    pres.save("HideInformationFromChart.pptx", slides.export.SaveFormat.PPTX)

常见问题

外部 Excel 工作簿可以作为数据源吗?这会如何影响重新计算?

是的。图表可以引用外部工作簿:当您连接或刷新外部来源时,公式和数值会从该工作簿中获取,图表在打开/编辑操作期间会反映这些更新。API 允许您指定外部工作簿路径并管理链接的数据。

我可以在不自行实现回归的情况下计算并显示趋势线吗?

是的。趋势线(线性、指数等)由 Aspose.Slides 添加并自动更新;其参数会根据系列数据自动重新计算,因此您无需自行实现计算。

如果演示文稿中有多个带外部链接的图表,我能控制每个图表使用哪个工作簿来计算数值吗?

是的。每个图表可以指向其自己的外部工作簿,或者您可以为每个图表独立创建/替换外部工作簿,而不受其他图表影响。