在 PHP 中為簡報圖表新增趨勢線

概觀

本文說明如何使用 Aspose.Slides 為簡報圖表新增趨勢線。它展示了如何建立圖表、為圖表系列新增趨勢線,並處理多種趨勢線類型,包括指數、線性、對數、移動平均、多項式與次方。

此外,本文還說明如何透過插入線狀圖形為圖表新增自訂線,並包含關於前向與後向趨勢線延伸值,以及在匯出為 PDF 或 SVG 或將圖表渲染為影像時趨勢線是否會保留的簡短 FAQ。

新增趨勢線

Aspose.Slides for PHP via Java 提供了簡易的 API,以管理不同圖表的趨勢線:

  1. 建立 Presentation 類別的實例。
  2. 依索引取得投影片的參考。
  3. 新增具有預設資料的圖表,並指定任意所需類型(本範例使用 ChartType::ClusteredColumn)。
  4. 為圖表系列 1 新增指數趨勢線。
  5. 為圖表系列 1 新增線性趨勢線。
  6. 為圖表系列 2 新增對數趨勢線。
  7. 為圖表系列 2 新增移動平均趨勢線。
  8. 為圖表系列 3 新增多項式趨勢線。
  9. 為圖表系列 3 新增次方趨勢線。
  10. 將修改後的簡報寫入 PPTX 檔案。

以下程式碼用於建立帶有趨勢線的圖表。

  # 建立 Presentation 類別的實例
  $pres = new Presentation();
  try {
    # 建立叢集柱狀圖表
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 400);
    # 為圖表系列 1 新增指數趨勢線
    $tredLinep = $chart->getChartData()->getSeries()->get_Item(0)->getTrendLines()->add(TrendlineType::Exponential);
    $tredLinep->setDisplayEquation(false);
    $tredLinep->setDisplayRSquaredValue(false);
    # 為圖表系列 1 新增線性趨勢線
    $tredLineLin = $chart->getChartData()->getSeries()->get_Item(0)->getTrendLines()->add(TrendlineType::Linear);
    $tredLineLin->setTrendlineType(TrendlineType::Linear);
    $tredLineLin->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $tredLineLin->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    # 為圖表系列 2 新增對數趨勢線
    $tredLineLog = $chart->getChartData()->getSeries()->get_Item(1)->getTrendLines()->add(TrendlineType::Logarithmic);
    $tredLineLog->setTrendlineType(TrendlineType::Logarithmic);
    $tredLineLog->addTextFrameForOverriding("New log trend line");
    # 為圖表系列 2 新增移動平均趨勢線
    $tredLineMovAvg = $chart->getChartData()->getSeries()->get_Item(1)->getTrendLines()->add(TrendlineType::MovingAverage);
    $tredLineMovAvg->setTrendlineType(TrendlineType::MovingAverage);
    $tredLineMovAvg->setPeriod(3);
    $tredLineMovAvg->setTrendlineName("New TrendLine Name");
    # 為圖表系列 3 新增多項式趨勢線
    $tredLinePol = $chart->getChartData()->getSeries()->get_Item(2)->getTrendLines()->add(TrendlineType::Polynomial);
    $tredLinePol->setTrendlineType(TrendlineType::Polynomial);
    $tredLinePol->setForward(1);
    $tredLinePol->setOrder(3);
    # 為圖表系列 3 新增次方趨勢線
    $tredLinePower = $chart->getChartData()->getSeries()->get_Item(1)->getTrendLines()->add(TrendlineType::Power);
    $tredLinePower->setTrendlineType(TrendlineType::Power);
    $tredLinePower->setBackward(1);
    # 儲存簡報
    $pres->save("ChartTrendLines_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

新增自訂線

Aspose.Slides for PHP via Java 提供了簡易的 API,以在圖表中新增自訂線。若要在簡報的選擇投影片上新增簡單的純線,請依照以下步驟操作:

  • 建立 Presentation 類別的實例
  • 使用其 Index 取得投影片的參考
  • 使用 Shapes 物件提供的 AddChart 方法建立新圖表
  • 使用 Shapes 物件提供的 AddAutoShape 方法加入線條類型的 AutoShape
  • 設定形狀線條的顏色。
  • 將修改後的簡報寫入 PPTX 檔案

以下程式碼用於建立帶有自訂線的圖表。

  # 建立 Presentation 類別的實例
  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 500, 400);
    $shape = $chart->getUserShapes()->getShapes()->addAutoShape(ShapeType::Line, 0, $chart->getHeight() / 2, $chart->getWidth(), 0);
    $shape->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $shape->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    $pres->save("Presentation.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

常見問題

趨勢線的“前向”和“後向”是什麼意思?

它們是趨勢線向前或向後延伸的長度:對於散佈 (XY) 圖表,以座標軸單位表示;對於非散佈圖表,以類別數表示。只允許非負值。

在將簡報匯出為 PDF 或 SVG,或在將投影片渲染為影像時,趨勢線會被保留嗎?

會。Aspose.Slides 會將簡報轉換為 PDF/SVG,並將圖表渲染為影像;作為圖表一部分的趨勢線在這些操作中會被保留。此外,也提供方法可直接 export an image of the chart 本身。