Trendvonalak hozzáadása bemutató diagramokhoz PHP-ben

Áttekintés

Ez a cikk bemutatja, hogyan adhatunk trendvonalakat a bemutatók diagramjaihoz az Aspose.Slides használatával. Megmutatja, hogyan hozhatunk létre diagramot, hogyan adhatunk trendvonalakat a diagram sorozataihoz, és hogyan dolgozhatunk többféle trendvonal típussal, többek között exponenciális, lineáris, logaritmikus, mozgó átlag, polinomiális és hatvány.

Emellett leírja, hogyan adhatunk egyedi vonalat a diagramhoz egy vonal alakzat beszúrásával, és tartalmaz egy rövid GYIK-ot a trendvonal előre és hátra vetített értékeiről, valamint arról, hogy a trendvonalak megőrződnek-e PDF vagy SVG exportálásakor, illetve a diagramok képként való renderelésekor.

Trendvonal hozzáadása

Használja a TrendlineCollection::add linket trendvonal hozzáadásához egy diagram sorozatához, a típus kiválasztásához a TrendlineType használatával. A példa egy klaszterezett oszlopdiagramot hoz létre alapértelmezett adatokkal, és minden három sorozatához két trendvonalat ad hozzá.

Az exponenciális trendvonal elrejti egyenletét és az R-négyzet értékét a setDisplayEquation és a setDisplayRSquaredValue segítségével, míg a lineáris trendvonal piros. A logaritmikus trendvonal a addTextFrameForOverriding‑t használja egy egyedi címke számára. A mozgó átlag egy három adatpontból álló setPeriod értéket és egy egyedi setTrendlineName‑t használ.

A polinomiális trendvonal harmadik rendű, a setOrder segítségével állítva, és egy kategóriával előre nyúlik a setForward segítségével. A hatvány trendvonal egy kategóriával hátra nyúlik a setBackward segítségével.

use aspose\slides\Presentation;
use aspose\slides\ChartType;
use aspose\slides\TrendlineType;
use aspose\slides\FillType;
use aspose\slides\SaveFormat;

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

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 20, 20, 500, 400);

    $firstSeries = $chart->getChartData()->getSeries()->get_Item(0);

    $exponentialTrendline = $firstSeries->getTrendLines()->add(TrendlineType::Exponential);
    $exponentialTrendline->setDisplayEquation(false);
    $exponentialTrendline->setDisplayRSquaredValue(false);

    $linearTrendline = $firstSeries->getTrendLines()->add(TrendlineType::Linear);
    $linearTrendline->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $linearTrendline->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);

    $secondSeries = $chart->getChartData()->getSeries()->get_Item(1);

    $logarithmicTrendline = $secondSeries->getTrendLines()->add(TrendlineType::Logarithmic);
    $logarithmicTrendline->addTextFrameForOverriding("New log trend line");

    $movingAverageTrendline = $secondSeries->getTrendLines()->add(TrendlineType::MovingAverage);
    $movingAverageTrendline->setPeriod(3);
    $movingAverageTrendline->setTrendlineName("New TrendLine Name");

    $thirdSeries = $chart->getChartData()->getSeries()->get_Item(2);

    $polynomialTrendline = $thirdSeries->getTrendLines()->add(TrendlineType::Polynomial);
    $polynomialTrendline->setForward(1);
    $polynomialTrendline->setOrder(3);

    $powerTrendline = $thirdSeries->getTrendLines()->add(TrendlineType::Power);
    $powerTrendline->setBackward(1);

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

Trendvonal metszéspont beállítása

Használja a setIntercept metódust a trendvonal Y értékének X = 0‑nál rögzítéséhez. Ez a beállítás támogatott lineáris, exponenciális és polinomiális trendvonalaknál.

Például egy termelési költségmodellnek 100 egység ismert fix költségnél kellene indulnia, még akkor is, ha a nem nulla termelési mennyiségek mérései más kiindulási értéket sugallnak. Egy lineáris trendvonal esetén a metszéspont rögzítése úgy korlátozza az y = ax + b egyenletet, hogy b = 100; a meredekség az adatokhoz illeszkedik ezen korlátozás mellett. Ez nem egyszerűen csak eltol egy már illesztett vonalat. A tengelykereszteződés beállítások azt szabályozzák, hogy hol találkoznak a diagram tengelyei, nem a trendvonal illesztett együtthatóit.

A következő példa egy szórt (XY) diagramot hoz létre, ahol a termelési mennyiségek 1‑től 4‑ig terjednek, és a költségek 170, 200, 230 és 260. A diagramot az alapértelmezett automatikus metszésponttal menti, beállítja a metszéspontot 100‑ra, és elment egy második PPTX‑et. A két fájl csak a metszéspont beállításában tér el. A trendvonal megjeleníti egyenletét, és visszanyúlik X = 0‑ig.

use aspose\slides\Presentation;
use aspose\slides\ChartType;
use aspose\slides\TrendlineType;
use aspose\slides\SaveFormat;

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

    $chart = $slide->getShapes()->addChart(ChartType::ScatterWithMarkers, 20, 20, 480, 210);
    $chart->setLegend(false);

    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();

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

    $nameCell = $workbook->getCell(0, 0, 1, "Production cost");
    $series = $chart->getChartData()->getSeries()->add($nameCell, ChartType::ScatterWithMarkers);
    $costs = [170, 200, 230, 260];

    for ($i = 0; $i < count($costs); $i++) {
        $xCell = $workbook->getCell(0, $i + 1, 0, $i + 1);
        $yCell = $workbook->getCell(0, $i + 1, 1, $costs[$i]);
        $series->getDataPoints()->addDataPointForScatterSeries($xCell, $yCell);
    }

    $trendline = $series->getTrendLines()->add(TrendlineType::Linear);
    $trendline->setDisplayEquation(true);
    $trendline->setBackward(1);

    $presentation->save("AutomaticIntercept.pptx", SaveFormat::Pptx);

    $trendline->setIntercept(100);
    $presentation->save("FixedIntercept.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Automatikus számítás esetén ezek az adatok y = 30x + 140 egyenletet eredményeznek. A metszéspont 100‑ra állítása helyette körülbelül y = 43.33x + 100‑at ad: a nulla pontban illesztett érték egyezik az ismert kiindulási értékkel, míg a vonal már nem halad minden adatponton.

Automatikus metszéspont Fixált metszéspont 100‑nál
Lineáris trendvonal automatikusan kiszámított 140‑es metszésponttal Lineáris trendvonal fixált 100‑as metszéssel

Mindkét kép ugyanazokat az adatokat és tengelyskálákat használja. A trendvonalak visszanyúlnak X = 0‑ig, hogy megmutassák metszéspontjaikat.

Alapértelmezés szerint a getIntercept NaN értéket ad vissza, ami meghatározatlan metszéspontot jelöl, nem nullát. A metszéspont ezután automatikusan számítódik ki az adatokból.

Egyedi vonal hozzáadása

Az egyedi vonal egy a diagram fölött rajzolt alakzat, nem a sorozat adataiból számított trendvonal. Ez a példa a ShapeCollection::addAutoShape segítségével egy vízszintes vonalat ad hozzá a diára a diagram felett. A vonal pozíciója a diakoordinátákban, pontokban van megadva, így a diagram bal szélénél kezdődik és a diagram feléig helyezkedik el. Szélessége megegyezik a diagram szélességével. A getLineFormat egy szilárd piros színt ad a vonalnak.

use aspose\slides\Presentation;
use aspose\slides\ChartType;
use aspose\slides\FillType;
use aspose\slides\ShapeType;
use aspose\slides\SaveFormat;

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

    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 500, 400);

    $lineY = java_values($chart->getY()) + java_values($chart->getHeight()) / 2;
    $line = $slide->getShapes()->addAutoShape(ShapeType::Line, $chart->getX(), $lineY, $chart->getWidth(), 0);
    $line->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $line->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);

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

GYIK

Mit jelent a ‘forward’ és a ‘backward’ egy trendvonal esetében?

A trendvonal előre vagy hátra vetített hossza: szórt (XY) diagramok esetén – tengelyegységekben; nem szórt diagramok esetén – kategóriák számában. Csak nem negatív értékek engedélyezettek.

Megmarad‑e a trendvonal a prezentáció PDF vagy SVG exportálásakor, illetve egy dia képként történő renderelésekor?

Igen. Az Aspose.Slides a prezentációkat PDF vagy SVG formátumba konvertálja, és a diagramokat képekké rendereli; a trendvonalak, mint a diagram részei, ezen műveletek során megmaradnak. Egy metódus is elérhető a diagram képként való exportálásához saját magához.