Optimalizace výpočtů grafů pro prezentace v Pythonu přes Java

Přehled

Aspose.Slides poskytuje rozhraní API pro práci s výpočty grafů a daty rozvržení v prezentacích. Tento článek ukazuje, jak získat skutečné hodnoty prvků grafu, včetně skutečné polohy a velikosti prvků grafu a skutečných hodnot os grafu. Vysvětluje také, že tyto hodnoty jsou naplněny po validaci rozvržení grafu.

Kromě toho článek demonstruje, jak získat skutečnou polohu nadřazených prvků grafu a jak skrýt komponenty grafu, jako jsou název, osy, legenda a mřížkové čáry. Tyto příklady vám pomohou programově zkontrolovat informace o rozvržení grafu a řídit viditelnost prvků grafu v PowerPoint prezentacích.

Vypočítat skutečné hodnoty prvků grafu

Aspose.Slides for Python via Java poskytuje jednoduché API pro získání těchto vlastností. Metody třídy Axis poskytují informace o skutečných hodnotách os grafu (getActualMaxValue, getActualMinValue, getActualMajorUnit, getActualMinorUnit, getActualMajorUnitScale, getActualMinorUnitScale). Nejprve zavolejte metodu Chart.validateChartLayout, aby se tyto vlastnosti naplnily skutečnými hodnotami.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation

presentation = Presentation()
try:
    chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.Area, 100, 100, 500, 350)
    chart.validateChartLayout()

    max_value = chart.getAxes().getVerticalAxis().getActualMaxValue()
    min_value = chart.getAxes().getVerticalAxis().getActualMinValue()

    major_unit = chart.getAxes().getHorizontalAxis().getActualMajorUnit()
    minor_unit = chart.getAxes().getHorizontalAxis().getActualMinorUnit()
finally:
    presentation.dispose()

Vypočítat skutečnou polohu nadřazených prvků grafu

Aspose.Slides for Python via Java poskytuje jednoduché API pro získání těchto vlastností. Metody třídy ChartPlotArea poskytují informace o skutečné poloze a velikosti oblasti vykreslování grafu (getActualX, getActualY, getActualWidth, getActualHeight). Nejprve zavolejte metodu Chart.validateChartLayout, aby se tyto vlastnosti naplnily skutečnými hodnotami.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation

presentation = Presentation()
try:
    chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 500, 350)
    chart.validateChartLayout()

    x = chart.getPlotArea().getActualX()
    y = chart.getPlotArea().getActualY()
    width = chart.getPlotArea().getActualWidth()
    height = chart.getPlotArea().getActualHeight()
finally:
    presentation.dispose()

Skrýt prvky grafu

Tato část vysvětluje, jak skrýt informace v grafu. Pomocí Aspose.Slides for Python via Java můžete skrýt Název, Vertikální osu, Horizontální osu a Mřížkové čáry. Následující ukázka kódu demonstruje použití těchto vlastností.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, FillType, LegendDataLabelPosition, LineDashStyle, MarkerStyleType, Presentation, SaveFormat
from java.awt import Color

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)
    chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 140, 118, 320, 370)

    # Skrýt název grafu.
    chart.setTitle(False)

    # Skrýt hodnotovou osu.
    chart.getAxes().getVerticalAxis().setVisible(False)

    # Skrýt kategorickou osu.
    chart.getAxes().getHorizontalAxis().setVisible(False)

    # Skrýt legendu.
    chart.setLegend(False)

    # Skrýt hlavní mřížkové čáry.
    chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.NoFill)

    # Ponechat pouze první řadu. Odstraňování od konce zachovává platnost zbývajících indexů.
    series_collection = chart.getChartData().getSeries()
    while series_collection.size() > 1:
        series_collection.removeAt(series_collection.size() - 1)

    series = series_collection.get_Item(0)

    series.getMarker().setSymbol(MarkerStyleType.Circle)
    series.getLabels().getDefaultDataLabelFormat().setShowValue(True)
    series.getLabels().getDefaultDataLabelFormat().setPosition(LegendDataLabelPosition.Top)
    series.getMarker().setSize(15)

    # Nastavit barvu čáry řady.
    series.getFormat().getLine().getFillFormat().setFillType(FillType.Solid)
    series.getFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.MAGENTA)
    series.getFormat().getLine().setDashStyle(LineDashStyle.Solid)

    presentation.save("HideInformationFromChart.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Často kladené otázky

Fungují externí sešity Excelu jako zdroj dat a jak to ovlivňuje přepočet?

Ano. Graf může odkazovat na externí sešit: když připojíte nebo obnovíte externí zdroj, vzorce a hodnoty jsou převzaty z tohoto sešitu a graf během operací otevření/úpravy odráží aktualizace. API vám umožňuje specifikovat cestu k externímu sešitu a spravovat propojená data.

Mohu vypočítat a zobrazit trendové čáry, aniž bych implementoval regresi sám?

Ano. Trendlines (lineární, exponenciální a další) jsou přidávány a aktualizovány pomocí Aspose.Slides; jejich parametry jsou automaticky přepočítány z dat řady, takže není nutné implementovat vlastní výpočty.

Pokud má prezentace více grafů s externími odkazy, mohu řídit, který sešit používá pro výpočet hodnot u každého grafu?

Ano. Každý graf může odkazovat na svůj vlastní externí sešit, nebo můžete pro každý graf nezávisle vytvořit/nahradit externí sešit.