PHPでPowerPointプレゼンテーションチャートを作成または更新

概要

この記事では、Java で PowerPoint プレゼンテーション チャートを作成する方法を説明します。また、チャートを更新することもできます。以下のトピックを取り上げます。

チャート: 通常

チャート: 散布

チャート: 円グラフ

チャート: ツリーマップ

チャート: 株価

チャート: 箱ひげ

チャート: ファネル

チャート: サンバースト

チャート: ヒストグラム

チャート: レーダー

チャート: 複数カテゴリ

チャート: マップ

アクション: チャートの更新

チャートの作成

チャートは、データを素早く可視化し、洞察を得るのに役立ちます。テーブルやスプレッドシートからはすぐには分からないことも明らかにします。

なぜチャートを作成するのか?

  • プレゼンテーションの 1 枚のスライド上で大量のデータを集約、圧縮、または要約する
  • データのパターンやトレンドを明らかにする
  • 時間経過や特定の測定単位に対するデータの方向性と勢いを推測する
  • 外れ値、異常、偏差、エラー、意味のないデータなどを検出する
  • 複雑なデータを伝達または提示する

PowerPoint では、挿入機能を使用してチャートを作成でき、さまざまな種類のチャートを設計するためのテンプレートが提供されています。Aspose.Slides を使用すると、一般的なチャートタイプに基づく標準チャートとカスタムチャートの両方を作成できます。

通常チャートの作成

Steps: Create Chart

コード手順:

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. データを指定してチャートを追加し、希望のチャートタイプを指定します。
  4. チャートにタイトルを追加します。
  5. チャートデータのワークシートにアクセスします。
  6. デフォルトの系列とカテゴリをすべてクリアします。
  7. 新しい系列とカテゴリを追加します。
  8. 系列用の新しいチャートデータを追加します。
  9. 系列の塗りつぶし色を追加します。
  10. 系列のラベルを追加します。
  11. 変更したプレゼンテーションを PPTX ファイルとして保存します。

この PHP コードは、通常のチャートの作成方法を示します:

  # PPTX ファイルを表すプレゼンテーション クラスのインスタンスを作成します
  $pres = new Presentation();
  try {
    # 最初のスライドにアクセスします
    $sld = $pres->getSlides()->get_Item(0);
    # デフォルト データでチャートを追加します
    $chart = $sld->getShapes()->addChart(ChartType::ClusteredColumn, 0, 0, 500, 500);
    # チャートのタイトルを設定します
    $chart->getChartTitle()->addTextFrameForOverriding("Sample Title");
    $chart->getChartTitle()->getTextFrameForOverriding()->getTextFrameFormat()->setCenterText(NullableBool::True);
    $chart->getChartTitle()->setHeight(20);
    $chart->hasTitle();
    # 最初の系列に値を表示するよう設定します
    $chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowValue(true);
    # チャート データ シートのインデックスを設定します
    $defaultWorksheetIndex = 0;
    # チャート データ ワークシートを取得します
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # デフォルトで生成された系列とカテゴリを削除します
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    $s = $chart->getChartData()->getSeries()->size();
    $s = $chart->getChartData()->getCategories()->size();
    # 新しい系列を追加します
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 1, "Series 1"), $chart->getType());
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 2, "Series 2"), $chart->getType());
    # 新しいカテゴリを追加します
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 3, 0, "Caetegoty 3"));
    # 最初のチャート系列を取得します
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    # 系列データを現在設定します
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 20));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 50));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 30));
    # 系列の塗りつぶし色を設定します
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    # 2 番目のチャート系列を取得します
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    # 系列データを設定します
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 2, 30));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 2, 10));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 2, 60));
    # 系列の塗りつぶし色を設定します
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);
    # 新しい系列の各カテゴリにカスタムラベルを作成します
    # 最初のラベルにカテゴリ名を表示するよう設定します
    $lbl = $series->getDataPoints()->get_Item(0)->getLabel();
    $lbl->getDataLabelFormat()->setShowCategoryName(true);
    $lbl = $series->getDataPoints()->get_Item(1)->getLabel();
    $lbl->getDataLabelFormat()->setShowSeriesName(true);
    # 3 番目のラベルに値を表示します
    $lbl = $series->getDataPoints()->get_Item(2)->getLabel();
    $lbl->getDataLabelFormat()->setShowValue(true);
    $lbl->getDataLabelFormat()->setShowSeriesName(true);
    $lbl->getDataLabelFormat()->setSeparator("/");
    # チャート付きプレゼンテーションを保存します
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

散布チャートの作成

散布チャート(散布図または x‑y グラフとも呼ばれます)は、2 つの変数間のパターンや相関関係を確認するために使用されます。

散布チャートを使用したい場合は次のときです。

  • 数値データがペアになっている
  • 2 つの変数がよくペアになる
  • 2 変数が関連しているかを判断したい
  • 従属変数に対して複数の値を持つ独立変数がある

手順: 散布チャートの作成 | 手順: PowerPoint 散布チャートの作成 | 手順: PowerPoint プレゼンテーション散布チャートの作成

  1. 上記の通常チャートの作成で示した手順に従ってください。
  2. 3 番目の手順では、データを指定してチャートを追加し、以下のいずれかのチャートタイプを指定してください
    1. ChartType::ScatterWithMarkers - マーカー付き散布チャートを表します。
    2. ChartType::ScatterWithSmoothLinesAndMarkers - スムーズラインとマーカー付き散布チャートを表します。
    3. ChartType::ScatterWithSmoothLines - スムーズラインのみの散布チャートを表します。
    4. ChartType::ScatterWithStraightLinesAndMarkers - 直線とマーカー付き散布チャートを表します。
    5. ChartType::ScatterWithStraightLines - 直線のみの散布チャートを表します。

この PHP コードは、異なるマーカー系列を持つ散布チャートの作成方法を示します:

  # PPTX ファイルを表すプレゼンテーション クラスのインスタンスを生成します
  $pres = new Presentation();
  try {
    # 最初のスライドにアクセスします
    $slide = $pres->getSlides()->get_Item(0);
    # デフォルトのチャートを作成します
    $chart = $slide->getShapes()->addChart(ChartType::ScatterWithSmoothLines, 0, 0, 400, 400);
    # デフォルトのチャートデータ ワークシート インデックスを取得します
    $defaultWorksheetIndex = 0;
    # チャートデータ ワークシートを取得します
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # デモ系列を削除します
    $chart->getChartData()->getSeries()->clear();
    # 新しい系列を追加します
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 1, 1, "Series 1"), $chart->getType());
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 1, 3, "Series 2"), $chart->getType());
    # 最初のチャート系列を取得します
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    # 系列に新しい点 (1:3) を追加します
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 1), $fact->getCell($defaultWorksheetIndex, 2, 2, 3));
    # 新しい点 (2:10) を追加します
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 2), $fact->getCell($defaultWorksheetIndex, 3, 2, 10));
    # 系列のタイプを変更します
    $series->setType(ChartType::ScatterWithStraightLinesAndMarkers);
    # チャート系列のマーカーを変更します
    $series->getMarker()->setSize(10);
    $series->getMarker()->setSymbol(MarkerStyleType::Star);
    # 2 番目のチャート系列を取得します
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    # そこに新しい点 (5:2) を追加します
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 2, 3, 5), $fact->getCell($defaultWorksheetIndex, 2, 4, 2));
    # 新しい点 (3:1) を追加します
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 3, 3, 3), $fact->getCell($defaultWorksheetIndex, 3, 4, 1));
    # 新しい点 (2:2) を追加します
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 4, 3, 2), $fact->getCell($defaultWorksheetIndex, 4, 4, 2));
    # 新しい点 (5:1) を追加します
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 5, 3, 5), $fact->getCell($defaultWorksheetIndex, 5, 4, 1));
    # チャート系列のマーカーを変更します
    $series->getMarker()->setSize(10);
    $series->getMarker()->setSymbol(MarkerStyleType::Circle);
    $pres->save("AsposeChart_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

円グラフの作成

円グラフは、データの全体に対する割合を示すのに最適です。特に、カテゴリラベルと数値がある場合に有用です。ただし、部分やラベルが多すぎる場合は、棒グラフの使用を検討してください。

手順: 円グラフの作成 | 手順: PowerPoint 円グラフの作成 | 手順: PowerPoint プレゼンテーション円グラフの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(この場合は ChartType.Pie)を指定します。
  4. [ChartDataWorkbook] にアクセスします。
  5. デフォルトの系列とカテゴリをクリアします。
  6. 新しい系列とカテゴリを追加します。
  7. 系列用の新しいチャートデータを追加します。
  8. チャートのポイントを追加し、円グラフの各セクタにカスタムカラーを設定します。
  9. 系列のラベルを設定します。
  10. 系列ラベルのリーダーラインを設定します。
  11. 円グラフの回転角度を設定します。
  12. 変更したプレゼンテーションを PPTX ファイルとして保存します。

この PHP コードは、円グラフの作成方法を示します:

  # PPTX ファイルを表すプレゼンテーション クラスのインスタンスを作成します
  $pres = new Presentation();
  try {
    # 最初のスライドにアクセスします
    $slides = $pres->getSlides()->get_Item(0);
    # デフォルトデータでチャートを追加します
    $chart = $slides->getShapes()->addChart(ChartType::Pie, 100, 100, 400, 400);
    # チャートのタイトルを設定します
    $chart->getChartTitle()->addTextFrameForOverriding("Sample Title");
    $chart->getChartTitle()->getTextFrameForOverriding()->getTextFrameFormat()->setCenterText(NullableBool::True);
    $chart->getChartTitle()->setHeight(20);
    $chart->setTitle(true);
    # 最初の系列に値を表示するよう設定します
    $chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowValue(true);
    # チャートデータ シートのインデックスを設定します
    $defaultWorksheetIndex = 0;
    # チャートデータ ワークシートを取得します
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # デフォルトで生成された系列とカテゴリを削除します
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    # 新しいカテゴリを追加します
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 1, 0, "First Qtr"));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 2, 0, "2nd Qtr"));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 3, 0, "3rd Qtr"));
    # 新しい系列を追加します
    $series = $chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 1, "Series 1"), $chart->getType());
    # 系列データを設定します
    $series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 20));
    $series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 50));
    $series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 30));
    # 新しいバージョンでは機能しません
    # Adding new points and setting sector color
    # series.IsColorVaried = true;
    $chart->getChartData()->getSeriesGroups()->get_Item(0)->setColorVaried(true);
    $point = $series->getDataPoints()->get_Item(0);
    $point->getFormat()->getFill()->setFillType(FillType::Solid);
    $point->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->CYAN);
    # セクタの枠線を設定します
    $point->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $point->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GRAY);
    $point->getFormat()->getLine()->setWidth(3.0);
    $point->getFormat()->getLine()->setStyle(LineStyle->ThinThick);
    $point->getFormat()->getLine()->setDashStyle(LineDashStyle->DashDot);
    $point1 = $series->getDataPoints()->get_Item(1);
    $point1->getFormat()->getFill()->setFillType(FillType::Solid);
    $point1->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->ORANGE);
    # セクタの枠線を設定します
    $point1->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $point1->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $point1->getFormat()->getLine()->setWidth(3.0);
    $point1->getFormat()->getLine()->setStyle(LineStyle->Single);
    $point1->getFormat()->getLine()->setDashStyle(LineDashStyle->LargeDashDot);
    $point2 = $series->getDataPoints()->get_Item(2);
    $point2->getFormat()->getFill()->setFillType(FillType::Solid);
    $point2->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->YELLOW);
    # セクタの枠線を設定します
    $point2->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $point2->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    $point2->getFormat()->getLine()->setWidth(2.0);
    $point2->getFormat()->getLine()->setStyle(LineStyle->ThinThin);
    $point2->getFormat()->getLine()->setDashStyle(LineDashStyle->LargeDashDotDot);
    # 新しい系列の各カテゴリにカスタムラベルを作成します
    $lbl1 = $series->getDataPoints()->get_Item(0)->getLabel();
    # lbl.ShowCategoryName = true;
    $lbl1->getDataLabelFormat()->setShowValue(true);
    $lbl2 = $series->getDataPoints()->get_Item(1)->getLabel();
    $lbl2->getDataLabelFormat()->setShowValue(true);
    $lbl2->getDataLabelFormat()->setShowLegendKey(true);
    $lbl2->getDataLabelFormat()->setShowPercentage(true);
    $lbl3 = $series->getDataPoints()->get_Item(2)->getLabel();
    $lbl3->getDataLabelFormat()->setShowSeriesName(true);
    $lbl3->getDataLabelFormat()->setShowPercentage(true);
    # チャートのリーダーラインを表示します
    $series->getLabels()->getDefaultDataLabelFormat()->setShowLeaderLines(true);
    # 円グラフセクタの回転角度を設定します
    $chart->getChartData()->getSeriesGroups()->get_Item(0)->setFirstSliceAngle(180);
    # チャート付きプレゼンテーションを保存します
    $pres->save("PieChart_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

折れ線グラフの作成

折れ線グラフ(ライングラフ)は、時間の経過に伴う値の変化を示すのに最適です。折れ線グラフを使用すると、多数のデータを同時に比較したり、時間経過による変化やトレンドを追跡したり、データ系列の異常を強調したりできます。

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(この場合は ChartType::Line)を指定します。
  4. IChartDataWorkbook にアクセスします。
  5. デフォルトの系列とカテゴリをクリアします。
  6. 新しい系列とカテゴリを追加します。
  7. 系列用の新しいチャートデータを追加します。
  8. 変更したプレゼンテーションを PPTX ファイルとして保存します

この PHP コードは、折れ線グラフの作成方法を示します:

  $pres = new Presentation();
  try {
    $lineChart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Line, 10, 50, 600, 350);
    $pres->save("lineChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

デフォルトでは、折れ線グラフのポイントは直線で結ばれます。ポイントを破線で結びたい場合は、以下のように希望の破線タイプを指定できます:

  $lineChart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Line, 10, 50, 600, 350);
  foreach($lineChart->getChartData()->getSeries() as $series) {
    $series->getFormat()->getLine()->setDashStyle(LineDashStyle->Dash);
  }

ツリーマップチャートの作成

ツリーマップチャートは、販売データなどでカテゴリごとの相対的なサイズを示し、同時に各カテゴリの大きな貢献項目に注意を引きつけたい場合に最適です。

手順: ツリーマップチャートの作成 | 手順: PowerPoint ツリーマップチャートの作成 | 手順: PowerPoint プレゼンテーションツリーマップチャートの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(この場合は ChartType.TreeMap)を指定します。
  4. [ChartDataWorkbook] にアクセスします。
  5. デフォルトの系列とカテゴリをクリアします。
  6. 新しい系列とカテゴリを追加します。
  7. 系列用の新しいチャートデータを追加します。
  8. 変更したプレゼンテーションを PPTX ファイルとして保存します

この PHP コードは、ツリーマップチャートの作成方法を示します:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Treemap, 50, 50, 500, 400);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    # ブランチ 1
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C1", "Leaf1"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem1");
    $leaf->getGroupingLevels()->setGroupingItem(2, "Branch1");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C2", "Leaf2"));
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C3", "Leaf3"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem2");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C4", "Leaf4"));
    # ブランチ 2
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C5", "Leaf5"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem3");
    $leaf->getGroupingLevels()->setGroupingItem(2, "Branch2");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C6", "Leaf6"));
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C7", "Leaf7"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem4");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C8", "Leaf8"));
    $series = $chart->getChartData()->getSeries()->add(ChartType::Treemap);
    $series->getLabels()->getDefaultDataLabelFormat()->setShowCategoryName(true);
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D1", 4));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D2", 5));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D3", 3));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D4", 6));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D5", 9));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D6", 9));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D7", 4));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D8", 3));
    $series->setParentLabelLayout(ParentLabelLayoutType::Overlapping);
    $pres->save("Treemap.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

株価チャートの作成

手順: 株価チャートの作成 | 手順: PowerPoint 株価チャートの作成 | 手順: PowerPoint プレゼンテーション株価チャートの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(ChartType.OpenHighLowClose)を指定します。
  4. [ChartDataWorkbook] にアクセスします。
  5. デフォルトの系列とカテゴリをクリアします。
  6. 新しい系列とカテゴリを追加します。
  7. 系列用の新しいチャートデータを追加します。
  8. HiLowLines の書式を指定します。
  9. 変更したプレゼンテーションを PPTX ファイルとして保存します

この PHP コードは、株価チャートの作成方法を示します:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::OpenHighLowClose, 50, 50, 600, 400, false);
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $chart->getChartData()->getCategories()->add($wb->getCell(0, 1, 0, "A"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, 2, 0, "B"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, 3, 0, "C"));
    $chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 1, "Open"), $chart->getType());
    $chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 2, "High"), $chart->getType());
    $chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 3, "Low"), $chart->getType());
    $chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 4, "Close"), $chart->getType());
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 1, 72));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 1, 25));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 1, 38));
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 2, 172));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 2, 57));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 2, 57));
    $series = $chart->getChartData()->getSeries()->get_Item(2);
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 3, 12));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 3, 12));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 3, 13));
    $series = $chart->getChartData()->getSeries()->get_Item(3);
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 4, 25));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 4, 38));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 4, 50));
    $chart->getChartData()->getSeriesGroups()->get_Item(0)->getUpDownBars()->setUpDownBars(true);
    $chart->getChartData()->getSeriesGroups()->get_Item(0)->getHiLowLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    foreach($chart->getChartData()->getSeries() as $ser) {
      $ser->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
    }
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

箱ひげチャートの作成

手順: 箱ひげチャートの作成 | 手順: PowerPoint 箱ひげチャートの作成 | 手順: PowerPoint プレゼンテーション箱ひげチャートの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(ChartType.BoxAndWhisker)を指定します。
  4. [ChartDataWorkbook] にアクセスします。
  5. デフォルトの系列とカテゴリをクリアします。
  6. 新しい系列とカテゴリを追加します。
  7. 系列用の新しいチャートデータを追加します。
  8. 変更したプレゼンテーションを PPTX ファイルとして保存します

この PHP コードは、箱ひげチャートの作成方法を示します:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::BoxAndWhisker, 50, 50, 500, 400);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A1", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A2", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A3", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A4", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A5", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A6", "Category 1"));
    $series = $chart->getChartData()->getSeries()->add(ChartType::BoxAndWhisker);
    $series->setQuartileMethod(QuartileMethodType::Exclusive);
    $series->setShowMeanLine(true);
    $series->setShowMeanMarkers(true);
    $series->setShowInnerPoints(true);
    $series->setShowOutlierPoints(true);
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B1", 15));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B2", 41));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B3", 16));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B4", 10));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B5", 23));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B6", 16));
    $pres->save("BoxAndWhisker.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

ファネルチャートの作成

手順: ファネルチャートの作成 | 手順: PowerPoint ファネルチャートの作成 | 手順: PowerPoint プレゼンテーションファネルチャートの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(ChartType.Funnel)を指定します。
  4. 変更したプレゼンテーションを PPTX ファイルとして保存します

この PHP コードは、ファネルチャートの作成方法を示します:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Funnel, 50, 50, 500, 400);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A1", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A2", "Category 2"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A3", "Category 3"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A4", "Category 4"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A5", "Category 5"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A6", "Category 6"));
    $series = $chart->getChartData()->getSeries()->add(ChartType::Funnel);
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B1", 50));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B2", 100));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B3", 200));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B4", 300));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B5", 400));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B6", 500));
    $pres->save("Funnel.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

サンバーストチャートの作成

手順: サンバーストチャートの作成 | 手順: PowerPoint サンバーストチャートの作成 | 手順: PowerPoint プレゼンテーションサンバーストチャートの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(この場合は ChartType.sunburst)を指定します。
  4. 変更したプレゼンテーションを PPTX ファイルとして保存します

この PHP コードは、サンバーストチャートの作成方法を示します:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Sunburst, 50, 50, 500, 400);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    # ブランチ 1
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C1", "Leaf1"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem1");
    $leaf->getGroupingLevels()->setGroupingItem(2, "Branch1");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C2", "Leaf2"));
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C3", "Leaf3"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem2");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C4", "Leaf4"));
    # ブランチ 2
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C5", "Leaf5"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem3");
    $leaf->getGroupingLevels()->setGroupingItem(2, "Branch2");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C6", "Leaf6"));
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C7", "Leaf7"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem4");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C8", "Leaf8"));
    $series = $chart->getChartData()->getSeries()->add(ChartType::Sunburst);
    $series->getLabels()->getDefaultDataLabelFormat()->setShowCategoryName(true);
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D1", 4));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D2", 5));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D3", 3));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D4", 6));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D5", 9));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D6", 9));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D7", 4));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D8", 3));
    $pres->save("Sunburst.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

ヒストグラムチャートの作成

手順: ヒストグラムチャートの作成 | 手順: PowerPoint ヒストグラムチャートの作成 | 手順: PowerPoint プレゼンテーションヒストグラムチャートの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(ChartType.Histogram)を指定します。
  4. [ChartDataWorkbook] にアクセスします。
  5. デフォルトの系列とカテゴリをクリアします。
  6. 新しい系列とカテゴリを追加します。
  7. 変更したプレゼンテーションを PPTX ファイルとして保存します

この PHP コードは、ヒストグラムチャートの作成方法を示します:

  $pres = new Presentation();
  $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Histogram, 50, 50, 500, 400);
  $chart->getChartData()->getCategories()->clear();
  $chart->getChartData()->getSeries()->clear();
  $wb = $chart->getChartData()->getChartDataWorkbook();
  $wb->clear(0);
  $series = $chart->getChartData()->getSeries()->add(ChartType::Histogram);
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A1", 15));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A2", -41));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A3", 16));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A4", 10));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A5", -23));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A6", 16));
  $chart->getAxes()->getHorizontalAxis()->setAggregationType(AxisAggregationType::Automatic);

レーダーチャートの作成

手順: レーダーチャートの作成 | 手順: PowerPoint レーダーチャートの作成 | 手順: PowerPoint プレゼンテーションレーダーチャートの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. データを指定してチャートを追加し、希望のチャートタイプ(この場合は ChartType::Radar)を指定します。
  4. 変更したプレゼンテーションを PPTX ファイルとして保存します

この PHP コードは、レーダーチャートの作成方法を示します:

  $pres = new Presentation();
  try {
    $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Radar, 20, 20, 400, 300);
    $pres->save("Radar-chart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

複数カテゴリチャートの作成

手順: 複数カテゴリチャートの作成 | 手順: PowerPoint 複数カテゴリチャートの作成 | 手順: PowerPoint プレゼンテーション複数カテゴリチャートの作成

  1. [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. デフォルトデータと共にチャートを追加し、目的のタイプ(ChartType.ClusteredColumn)を指定します。
  4. [ChartDataWorkbook] にアクセスします。
  5. デフォルトの系列とカテゴリをクリアします。
  6. 新しい系列とカテゴリを追加します。
  7. 系列用の新しいチャートデータを追加します。
  8. 変更したプレゼンテーションを PPTX ファイルとして保存します。

この PHP コードは、複数カテゴリチャートの作成方法を示します:

  $pres = new Presentation();
  try {
    $ch = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 600, 450);
    $ch->getChartData()->getSeries()->clear();
    $ch->getChartData()->getCategories()->clear();
    $fact = $ch->getChartData()->getChartDataWorkbook();
    $fact->clear(0);
    $defaultWorksheetIndex = 0;
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c2", "A"));
    $category->getGroupingLevels()->setGroupingItem(1, "Group1");
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c3", "B"));
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c4", "C"));
    $category->getGroupingLevels()->setGroupingItem(1, "Group2");
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c5", "D"));
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c6", "E"));
    $category->getGroupingLevels()->setGroupingItem(1, "Group3");
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c7", "F"));
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c8", "G"));
    $category->getGroupingLevels()->setGroupingItem(1, "Group4");
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c9", "H"));
    # 系列を追加
    $series = $ch->getChartData()->getSeries()->add($fact->getCell(0, "D1", "Series 1"), ChartType::ClusteredColumn);
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D2", 10));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D3", 20));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D4", 30));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D5", 40));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D6", 50));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D7", 60));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D8", 70));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D9", 80));
    # チャート付きプレゼンテーションを保存
    $pres->save("AsposeChart_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

マップチャートの作成

マップチャートは、データを含む領域を視覚化したものです。地理的領域間でデータや値を比較するのに最適です。

手順: マップチャートの作成 | 手順: PowerPoint マップチャートの作成 | 手順: PowerPoint プレゼンテーションマップチャートの作成

この PHP コードは、マップチャートの作成方法を示します:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Map, 50, 50, 500, 400);
    $pres->save("mapChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

組み合わせチャートの作成

組み合わせチャート(コンボチャート)は、1 つのグラフに 2 つ以上のチャートタイプを組み合わせたものです。このチャートを使用すると、複数のデータセット間の違いを強調、比較、検証でき、データ間の関係を把握しやすくなります。

組み合わせチャート

以下の PHP コードは、上記の組み合わせチャートを PowerPoint プレゼンテーションに作成する方法を示します:

function createComboChart() {
    $presentation = new Presentation();
    $slide = $presentation->getSlides()->get_Item(0);
    try {
        $chart = createChartWithFirstSeries($slide);

        addSecondSeriesToChart($chart);
        addThirdSeriesToChart($chart);

        setPrimaryAxesFormat($chart);
        setSecondaryAxesFormat($chart);

        $presentation->save("combo-chart.pptx", SaveFormat::Pptx);
    } finally {
        $presentation->dispose();
    }
}

function createChartWithFirstSeries($slide) {
    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 400);

    // チャートのタイトルを設定します。
    $chart->setTitle(true);
    $chart->getChartTitle()->addTextFrameForOverriding("Chart Title");
    $chart->getChartTitle()->setOverlay(false);
    $titleParagraph = $chart->getChartTitle()->getTextFrameForOverriding()->getParagraphs()->get_Item(0);
    $titleFormat = $titleParagraph->getParagraphFormat()->getDefaultPortionFormat();
    $titleFormat->setFontBold(NullableBool::False);
    $titleFormat->setFontHeight(18);
    
    // チャートの凡例を設定します。
    $chart->getLegend()->setPosition(LegendPositionType::Bottom);
    $chart->getLegend()->getTextFormat()->getPortionFormat()->setFontHeight(12);

    // デフォルトで生成された系列とカテゴリを削除します。
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();

    $worksheetIndex = 0;
    $workbook = $chart->getChartData()->getChartDataWorkbook();

    // 新しいカテゴリを追加します。
    $chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 1, 0, "Category 1"));
    $chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 2, 0, "Category 2"));
    $chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 3, 0, "Category 3"));
    $chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 4, 0, "Category 4"));

    // 最初の系列を追加します。
    $seriesNameCell = $workbook->getCell($worksheetIndex, 0, 1, "Series 1");
    $series = $chart->getChartData()->getSeries()->add($seriesNameCell, $chart->getType());

    $series->getParentSeriesGroup()->setOverlap(-25);
    $series->getParentSeriesGroup()->setGapWidth(220);

    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 1, 1, 4.3));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 2, 1, 2.5));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 3, 1, 3.5));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 4, 1, 4.5));

    return $chart;
}

function addSecondSeriesToChart($chart) {
    $workbook = $chart->getChartData()->getChartDataWorkbook();
    $worksheetIndex = 0;

    $seriesNameCell = $workbook->getCell($worksheetIndex, 0, 2, "Series 2");
    $series = $chart->getChartData()->getSeries()->add($seriesNameCell, ChartType::ClusteredColumn);

    $series->getParentSeriesGroup()->setOverlap(-25);
    $series->getParentSeriesGroup()->setGapWidth(220);

    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 1, 2, 2.4));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 2, 2, 4.4));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 3, 2, 1.8));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 4, 2, 2.8));
}

function addThirdSeriesToChart($chart) {
    $workbook = $chart->getChartData()->getChartDataWorkbook();
    $worksheetIndex = 0;

    $seriesNameCell = $workbook->getCell($worksheetIndex, 0, 3, "Series 3");
    $series = $chart->getChartData()->getSeries()->add($seriesNameCell, ChartType::Line);

    $series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 1, 3, 2.0));
    $series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 2, 3, 2.0));
    $series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 3, 3, 3.0));
    $series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 4, 3, 5.0));

    $series->setPlotOnSecondAxis(true);
}

function setPrimaryAxesFormat($chart) {
    // 水平軸を設定します。
    $horizontalAxis = $chart->getAxes()->getHorizontalAxis();
    $horizontalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
    $horizontalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);

    setAxisTitle($horizontalAxis, "X Axis");

    // 垂直軸を設定します。
    $verticalAxis = $chart->getAxes()->getVerticalAxis();
    $verticalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
    $verticalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);

    setAxisTitle($verticalAxis, "Y Axis 1");

    // 垂直主目盛線を設定します。
    $majorGridLinesFormat = $verticalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat();
    $majorGridLinesFormat->setFillType(FillType::Solid);
    $majorGridLinesFormat->getSolidFillColor()->setColor(new java("java.awt.Color", 217, 217, 217));
}

function setSecondaryAxesFormat($chart) {
    // 二次水平軸を設定します。
    $secondaryHorizontalAxis = $chart->getAxes()->getSecondaryHorizontalAxis();
    $secondaryHorizontalAxis->setPosition(AxisPositionType::Bottom);
    $secondaryHorizontalAxis->setCrossType(CrossesType::Maximum);
    $secondaryHorizontalAxis->setVisible(false);
    $secondaryHorizontalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
    $secondaryHorizontalAxis->getMinorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);

    // 二次垂直軸を設定します。
    $secondaryVerticalAxis = $chart->getAxes()->getSecondaryVerticalAxis();
    $secondaryVerticalAxis->setPosition(AxisPositionType::Right);
    $secondaryVerticalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
    $secondaryVerticalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
    $secondaryVerticalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
    $secondaryVerticalAxis->getMinorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);

    setAxisTitle($secondaryVerticalAxis, "Y Axis 2");
}

function setAxisTitle($axis, $axisTitle) {
    $axis->setTitle(true);
    $axis->getTitle()->setOverlay(false);
    $titleParagraph = $axis->getTitle()->addTextFrameForOverriding($axisTitle)->getParagraphs()->get_Item(0);
    $titleFormat = $titleParagraph->getParagraphFormat()->getDefaultPortionFormat();
    $titleFormat->setFontBold(NullableBool::False);
    $titleFormat->setFontHeight(12);
}

チャートの更新

手順: PowerPoint チャートの更新 | 手順: プレゼンテーションチャートの更新 | 手順: PowerPoint プレゼンテーションチャートの更新

  1. 更新対象のチャートが含まれるプレゼンテーションを表す [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. すべてのシェイプを走査して目的のチャートを見つけます。
  4. チャートデータのワークシートにアクセスします。
  5. 系列の値を変更してチャートデータ系列を修正します。
  6. 新しい系列を追加し、データを入力します。
  7. 変更したプレゼンテーションを PPTX ファイルとして保存します。

この PHP コードは、チャートを更新する方法を示します:

  $pres = new Presentation();
  try {
    # 最初のスライドマーカーにアクセス
    $sld = $pres->getSlides()->get_Item(0);
    # デフォルトデータでチャートを取得
    $chart = $sld->getShapes()->get_Item(0);
    # チャートデータシートのインデックスを設定
    $defaultWorksheetIndex = 0;
    # チャートデータワークシートを取得
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # チャートカテゴリ名を変更
    $fact->getCell($defaultWorksheetIndex, 1, 0, "Modified Category 1");
    $fact->getCell($defaultWorksheetIndex, 2, 0, "Modified Category 2");
    # 最初のチャート系列を取得
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    # 系列データを更新中
    $fact->getCell($defaultWorksheetIndex, 0, 1, "New_Series1");// 系列名を変更

    $series->getDataPoints()->get_Item(0)->getValue()->setData(90);
    $series->getDataPoints()->get_Item(1)->getValue()->setData(123);
    $series->getDataPoints()->get_Item(2)->getValue()->setData(44);
    # 2番目のチャート系列を取得
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    # 系列データを更新中
    $fact->getCell($defaultWorksheetIndex, 0, 2, "New_Series2");// 系列名を変更

    $series->getDataPoints()->get_Item(0)->getValue()->setData(23);
    $series->getDataPoints()->get_Item(1)->getValue()->setData(67);
    $series->getDataPoints()->get_Item(2)->getValue()->setData(99);
    # 新しい系列を追加中
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 3, "Series 3"), $chart->getType());
    # 3番目のチャート系列を取得
    $series = $chart->getChartData()->getSeries()->get_Item(2);
    # 系列データを設定中
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 3, 20));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 3, 50));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 3, 30));
    $chart->setType(ChartType::ClusteredCylinder);
    # チャート付きプレゼンテーションを保存
    $pres->save("AsposeChartModified_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

チャートのデータ範囲の設定

チャートのデータ範囲を設定するには、次の手順を実行します。

  1. 対象チャートを含むプレゼンテーションを表す [Presentation] クラスのインスタンスを作成します。
  2. インデックスを使用してスライドの参照を取得します。
  3. すべてのシェイプを走査して目的のチャートを見つけます。
  4. チャートデータにアクセスし、範囲を設定します。
  5. 変更したプレゼンテーションを PPTX ファイルとして保存します。

この PHP コードは、チャートのデータ範囲を設定する方法を示します:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $chart = $slide->getShapes()->get_Item(0);
    $chart->getChartData()->setRange("Sheet1!A1:B4");
    $pres->save("SetDataRange_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

チャートでデフォルトマーカーを使用する

チャートでデフォルトマーカーを使用すると、各系列に自動的に異なるデフォルトマーカー記号が設定されます。

この PHP コードは、チャート系列のマーカーを自動的に設定する方法を示します:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $chart = $slide->getShapes()->addChart(ChartType::LineWithMarkers, 10, 10, 400, 400);
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    $fact = $chart->getChartData()->getChartDataWorkbook();
    $chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 1, "Series 1"), $chart->getType());
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 1, 0, "C1"));
    $series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 1, 1, 24));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 2, 0, "C2"));
    $series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 2, 1, 23));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 3, 0, "C3"));
    $series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 3, 1, -10));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 4, 0, "C4"));
    $series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 4, 1, null));
    $chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 2, "Series 2"), $chart->getType());
    # 2 番目のチャート系列を取得
    $series2 = $chart->getChartData()->getSeries()->get_Item(1);
    # 系列データを設定中
    $series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 1, 2, 30));
    $series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 2, 2, 10));
    $series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 3, 2, 60));
    $series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 4, 2, 40));
    $chart->setLegend(true);
    $chart->getLegend()->setOverlay(false);
    $pres->save("DefaultMarkersInChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

Aspose.Slides がサポートするチャートタイプは何ですか?

Aspose.Slides は、chart types を多数サポートしており、棒グラフ、折れ線グラフ、円グラフ、面グラフ、散布図、ヒストグラム、レーダーなどがあります。この柔軟性により、データ可視化のニーズに最適なチャートタイプを選択できます。

スライドに新しいチャートを追加するにはどうすればよいですか?

まず、Presentation クラスのインスタンスを作成し、インデックスで目的のスライドを取得してから、チャート追加メソッドを呼び出し、チャートタイプと初期データを指定します。この手順でチャートがプレゼンテーションに直接組み込まれます。

チャートに表示されているデータを更新するには?

ChartDataWorkbook にアクセスし、既定の系列とカテゴリをクリアしてからカスタムデータを追加します。これにより、チャートを最新のデータに更新できます。

チャートの外観をカスタマイズできますか?

はい、Aspose.Slides は豊富なカスタマイズ機能を提供します。色、フォント、ラベル、凡例、その他の formatting elements を変更して、チャートの外観をデザイン要件に合わせて調整できます。