Python via Java でのプレゼンテーション向けチャート計算の最適化

概要

Aspose.Slides は、プレゼンテーション内のチャート計算とレイアウト データを操作する API を提供します。本記事では、チャート要素の実際の値(チャート要素の実際の位置とサイズ、チャート軸の実際の値)を取得する方法を示します。また、これらの値はチャート レイアウトの検証後に設定されることを説明します。

さらに、親チャート要素の実際の位置の取得方法や、タイトル、軸、凡例、グリッド線などのチャート コンポーネントを非表示にする方法も示します。これらの例を組み合わせることで、プログラムから PowerPoint プレゼンテーションのチャート レイアウト情報を検査し、チャート要素の表示/非表示を制御できます。

チャート要素の実際の値を計算する

Aspose.Slides for Python via Java は、これらのプロパティを取得するためのシンプルな API を提供します。
Axis クラスのメソッドは、チャート軸の実際の値に関する情報を提供します(getActualMaxValuegetActualMinValuegetActualMajorUnitgetActualMinorUnitgetActualMajorUnitScalegetActualMinorUnitScale)。これらのプロパティに実際の値を設定するには、まずChart.validateChartLayoutメソッドを呼び出してください。

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()

親チャート要素の実際の位置を計算する

Aspose.Slides for Python via Java は、これらのプロパティを取得するためのシンプルな API を提供します。
ChartPlotArea クラスのメソッドは、チャート プロット領域の実際の位置とサイズに関する情報を提供します(getActualXgetActualYgetActualWidthgetActualHeight)。これらのプロパティに実際の値を設定するには、まずChart.validateChartLayoutメソッドを呼び出してください。

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()

チャート要素を非表示にする

このセクションでは、チャートから情報を非表示にする方法を説明します。Aspose.Slides for Python via Java を使用すると、タイトル、縦軸、横軸、グリッド線を非表示にできます。以下のコード例は、これらのプロパティの使用方法を示しています。

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)

    # チャートのタイトルを非表示にします。
    chart.setTitle(False)

    # 数値軸を非表示にします。
    chart.getAxes().getVerticalAxis().setVisible(False)

    # カテゴリ軸を非表示にします。
    chart.getAxes().getHorizontalAxis().setVisible(False)

    # 凡例を非表示にします。
    chart.setLegend(False)

    # 主要なグリッド線を非表示にします。
    chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.NoFill)

    # 最初の系列だけを残します。末尾から削除すると、残りのインデックスが有効なままです。
    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)

    # 系列の線の色を設定します。
    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()

よくある質問

外部のExcelブックをデータ ソースとして使用できますか、再計算にはどう影響しますか?

はい。チャートは外部ブックを参照できます。外部ソースに接続または再読み込みすると、数式と値がそのブックから取得され、開く/編集する操作中にチャートが更新されます。API を使用して外部ブックを指定するパスを設定し、リンクされたデータを管理できます。

回帰分析を自分で実装せずに、トレンドラインを計算・表示できますか?

はい。トレンドライン(線形、指数など)は Aspose.Slides が自動的に追加・更新し、パラメータは系列データから再計算されます。独自の計算を実装する必要はありません。

プレゼンテーションに外部リンク付きのチャートが複数ある場合、各チャートが使用するブックを個別に制御できますか?

はい。各チャートはそれぞれの外部ブックを指定できます。また、他のチャートとは独立して、チャートごとに外部ブックを作成または置き換えることも可能です。