Přidání trendových čar do grafů v prezentaci v Pythonu
Přehled
Tento článek vysvětluje, jak pomocí Aspose.Slides přidat trendové čáry do grafů v prezentaci. Ukazuje, jak vytvořit graf, přidat trendové čáry k sériím grafu a pracovat s několika typy trendových čar, včetně exponenciální, lineární, logaritmické, klouzavého průměru, polynomické a mocninné.
Také popisuje, jak přidat vlastní čáru do grafu vložením tvaru čáry, a obsahuje krátké FAQ o hodnotách projekce trendové čáry dopředu a dozadu a o tom, zda jsou trendové čáry zachovány při exportu do PDF nebo SVG a při vykreslování grafů jako obrázků.
Přidání trendové čáry
Použijte TrendlineCollection.add k přidání trendové čáry k sérii grafu, přičemž typ vyberete pomocí TrendlineType. Příklad vytvoří seskupený sloupcový graf s výchozími daty a přidá dvě trendové čáry ke každé ze svých tří sérií.
Exponenciální trendová čára skryje svou rovnici a hodnotu R‑kvadrátu pomocí display_equation a display_r_squared_value, zatímco lineární trendová čára je červená. Logaritmická trendová čára používá add_text_frame_for_overriding pro vlastní popisek. Klouzavý průměr používá period tří datových bodů a vlastní trendline_name.
Polynomická trendová čára má order tři a rozšíří o jednu kategorii dopředu pomocí forward. Mocninná trendová čára rozšíří o jednu kategorii dozadu pomocí backward.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 400)
first_series = chart.chart_data.series[0]
exponential_trendline = first_series.trend_lines.add(charts.TrendlineType.EXPONENTIAL)
exponential_trendline.display_equation = False
exponential_trendline.display_r_squared_value = False
linear_trendline = first_series.trend_lines.add(charts.TrendlineType.LINEAR)
linear_trendline.format.line.fill_format.fill_type = slides.FillType.SOLID
linear_trendline.format.line.fill_format.solid_fill_color.r = 255
linear_trendline.format.line.fill_format.solid_fill_color.g = 0
linear_trendline.format.line.fill_format.solid_fill_color.b = 0
second_series = chart.chart_data.series[1]
logarithmic_trendline = second_series.trend_lines.add(charts.TrendlineType.LOGARITHMIC)
logarithmic_trendline.add_text_frame_for_overriding("New log trend line")
moving_average_trendline = second_series.trend_lines.add(charts.TrendlineType.MOVING_AVERAGE)
moving_average_trendline.period = 3
moving_average_trendline.trendline_name = "New TrendLine Name"
third_series = chart.chart_data.series[2]
polynomial_trendline = third_series.trend_lines.add(charts.TrendlineType.POLYNOMIAL)
polynomial_trendline.forward = 1
polynomial_trendline.order = 3
power_trendline = third_series.trend_lines.add(charts.TrendlineType.POWER)
power_trendline.backward = 1
presentation.save("ChartTrendLines.pptx", slides.export.SaveFormat.PPTX)
Nastavení průsečíku trendové čáry
Použijte intercept k fixaci hodnoty Y trendové čáry při X = 0. Toto nastavení je podporováno pro lineární, exponenciální a polynomické trendové čáry.
Například model nákladů na výrobu může potřebovat začít se známými pevnými náklady 100, i když měření při nenulových objemech výroby naznačují jiný základ. Pro lineární trendovou čáru fixace průsečíku omezuje rovnici y = ax + b na b = 100; sklon je přizpůsoben datům pod tímto omezením. Nejde jen o posunutí již přizpůsobené čáry. Nastavení průsečíku os řídí, kde se osy grafu setkávají, nikoli koeficienty přizpůsobené trendové čáry.
Následující příklad vytvoří bodový (XY) graf s objemy výroby od 1 do 4 a náklady 170, 200, 230 a 260. Uloží graf s výchozím automatickým průsečím, nastaví průsečík na 100 a uloží druhý soubor PPTX. Tyto dva soubory se liší pouze nastavením průsečíku. Trendová čára zobrazuje svou rovnici a rozšíří se zpět na X = 0.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.SCATTER_WITH_MARKERS, 20, 20, 480, 210)
chart.has_legend = False
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
name_cell = workbook.get_cell(0, 0, 1, "Production cost")
series = chart.chart_data.series.add(name_cell, charts.ChartType.SCATTER_WITH_MARKERS)
costs = [170, 200, 230, 260]
for i, cost in enumerate(costs):
x_cell = workbook.get_cell(0, i + 1, 0, i + 1)
y_cell = workbook.get_cell(0, i + 1, 1, cost)
series.data_points.add_data_point_for_scatter_series(x_cell, y_cell)
trendline = series.trend_lines.add(charts.TrendlineType.LINEAR)
trendline.display_equation = True
trendline.backward = 1
presentation.save("AutomaticIntercept.pptx", slides.export.SaveFormat.PPTX)
trendline.intercept = 100
presentation.save("FixedIntercept.pptx", slides.export.SaveFormat.PPTX)
Při automatickém výpočtu tato data dávají y = 30x + 140. Nastavení průsečíku na 100 místo toho dává přibližně y = 43.33x + 100: přizpůsobená hodnota při nule odpovídá známému základu, zatímco čára již neprochází všemi datovými body.
| Automatický průsečík | Pevný průsečík 100 |
|---|---|
![]() |
![]() |
Obě obrázky používají stejná data a měřítka os. Trendové čáry jsou rozšířeny zpět na X = 0, aby ukázaly své průsečíky.
Ve výchozím nastavení vlastnost obsahuje float("nan"), což představuje nespecifikovaný průsečík místo nuly. Průsečík je pak automaticky vypočítán z dat.
Přidání vlastní čáry
Vlastní čára je tvar nakreslený nad grafem, nikoli trendová čára vypočtená z dat sérií. Tento příklad používá ShapeCollection.add_auto_shape k přidání vodorovné čáry na snímek nad grafem. Pozice čáry je uvedena v souřadnicích snímku, měřených v bodech, takže začíná u levého okraje grafu a leží v polovině výšky grafu. Její šířka odpovídá šířce grafu. line_format dává čáře plnou červenou barvu.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 100, 100, 500, 400)
line = slide.shapes.add_auto_shape(slides.ShapeType.LINE, chart.x, chart.y + chart.height / 2, chart.width, 0)
line.line_format.fill_format.fill_type = slides.FillType.SOLID
line.line_format.fill_format.solid_fill_color.r = 255
line.line_format.fill_format.solid_fill_color.g = 0
line.line_format.fill_format.solid_fill_color.b = 0
presentation.save("AddCustomLines.pptx", slides.export.SaveFormat.PPTX)
Často kladené otázky
Co znamená ‘forward’ a ‘backward’ u trendové čáry?
Jedná se o délky trendové čáry promítané dopředu/dozadu: pro bodové (XY) grafy — v jednotkách os; pro nebodové grafy — v počtu kategorií. Povolené jsou pouze nezáporné hodnoty.
Zůstane trendová čára zachována při exportu prezentace do PDF nebo SVG, nebo při vykreslování snímku jako obrázku?
Ano. Aspose.Slides převádí prezentace na PDF nebo SVG a vykresluje grafy jako obrázky; trendové čáry, jako součást grafu, jsou během těchto operací zachovány. K dispozici je také metoda k exportu obrázku grafu.

