Python via Java でのプレゼンテーション向けチャート計算の最適化
概要
Aspose.Slides は、プレゼンテーション内のチャート計算とレイアウト データを操作する API を提供します。本記事では、チャート要素の実際の値(チャート要素の実際の位置とサイズ、チャート軸の実際の値)を取得する方法を示します。また、これらの値はチャート レイアウトの検証後に設定されることを説明します。
さらに、親チャート要素の実際の位置の取得方法や、タイトル、軸、凡例、グリッド線などのチャート コンポーネントを非表示にする方法も示します。これらの例を組み合わせることで、プログラムから PowerPoint プレゼンテーションのチャート レイアウト情報を検査し、チャート要素の表示/非表示を制御できます。
チャート要素の実際の値を計算する
Aspose.Slides for Python via Java は、これらのプロパティを取得するためのシンプルな API を提供します。
Axis クラスのメソッドは、チャート軸の実際の値に関する情報を提供します(getActualMaxValue、getActualMinValue、getActualMajorUnit、getActualMinorUnit、getActualMajorUnitScale、getActualMinorUnitScale)。これらのプロパティに実際の値を設定するには、まず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 クラスのメソッドは、チャート プロット領域の実際の位置とサイズに関する情報を提供します(getActualX、getActualY、getActualWidth、getActualHeight)。これらのプロパティに実際の値を設定するには、まず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 が自動的に追加・更新し、パラメータは系列データから再計算されます。独自の計算を実装する必要はありません。
プレゼンテーションに外部リンク付きのチャートが複数ある場合、各チャートが使用するブックを個別に制御できますか?
はい。各チャートはそれぞれの外部ブックを指定できます。また、他のチャートとは独立して、チャートごとに外部ブックを作成または置き換えることも可能です。