Vodopádový graf ukazuje, jak se počáteční hodnota mění prostřednictvím řady nárůstů a poklesů. Například jej můžete použít ve finanční zprávě k zobrazení toho, jak prodeje, výdaje a další příjmy přispívají k konečnému zůstatku.

V tomto tutoriálu vytvoříte vodopádový graf v dokumentu Word pomocí Pythonu a Aspose.Words for Python via .NET. Také se naučíte, jak identifikovat celkové body v grafu a prozkoumat vodopádové grafy v existujících dokumentech.

Python knihovna pro vytváření vodopádových grafů ve Wordu

Aspose.Words for Python via .NET umožňuje vám vytvářet a upravovat dokumenty Word v Pythonu. Můžete jej použít k přidání grafů do zpráv a pracovat s řadami grafů a datovými body.

Nainstalujte knihovnu z PyPI:

pip install aspose-words

Použijte Aspose.Words for Python via .NET 26.10 nebo novější pro kompletní tutoriál. Tato verze představila rozhraní API používaná k ověření, zda je bod vodopádového grafu celkem.

Pro požadavky na platformu a další podrobnosti o instalaci se podívejte na instalační dokumentaci.

Pochopte ukázkový vodopádový graf

Příklady používají následující data k zobrazení změn od počátečního zůstatku po konečný zůstatek:

CategoryValuePoint type
Počáteční zůstatek100Celkem
Prodeje+40Nárůst
Výdaje−20Pokles
Mezisoučet120Celkem
Jiný příjem+10Nárůst
Konečný zůstatek130Celkem

Prodeje, výdaje a další příjmy představují změny. Počáteční zůstatek, mezisoučet a konečný zůstatek představují hodnoty v konkrétních fázích.

Chcete‑li vytvořit řadu grafu, poskytnete tři seznamy ve stejném pořadí:

  • Categories: Štítky pro body grafu.
  • Values: Změny a explicitně dodané celkové hodnoty.
  • Total flags: Booleovské hodnoty, které označují odpovídající body jako součty.

Příznaky identifikují celkové body; neprovádějí jejich výpočet. V tomto příkladu je mezisoučet zadán jako 120 a konečný zůstatek je zadán jako 130.

Vytvoření vodopádového grafu ve Wordu pomocí Pythonu

Postupujte podle těchto kroků k vytvoření grafu:

  1. Vytvořte Document a DocumentBuilder.
  2. Vložte graf pomocí ChartType.WATERFALL.
  3. Nastavte název grafu a vymažte výchozí řadu.
  4. Přidejte kategorie, hodnoty a příznaky celku.
  5. Uložte dokument jako soubor DOCX.

Následující příklad vytváří kompletní graf:

import aspose.words as aw

# Create a document and document builder.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)

# Insert a waterfall chart.
shape = builder.insert_chart(
    chart_type=aw.drawing.charts.ChartType.WATERFALL,
    width=500,
    height=350
)

chart = shape.chart
chart.title.text = "Balance Changes"

# Remove the default chart series.
chart.series.clear()

# Define categories, values, and total flags.
categories = [
    "Opening balance",
    "Sales",
    "Expenses",
    "Subtotal",
    "Other income",
    "Closing balance"
]

values = [100, 40, -20, 120, 10, 130]

total_flags = [True, False, False, True, False, True]

# Add the waterfall series.
series = chart.series.add(
    series_name="Balance",
    categories=categories,
    values=values,
    is_subtotal=total_flags
)

# Save the Word document.
doc.save("waterfall-chart.docx")

Metoda add() specifická pro vodopád přijímá název řady, kategorie, hodnoty a booleanové příznaky. Každá položka na daném indexu popisuje stejný bod grafu. Přestože je booleanový argument pojmenován is_subtotal, dokumentovaný příklad jej používá k označení počáteční hodnoty, mezisoučtu a konečné hodnoty jako součty.

Výsledný waterfall-chart.docx obsahuje graf se šesti body, který zobrazuje počáteční zůstatek, změny, mezisoučet a konečný zůstatek.

Vytvořte vodopádové grafy ve Wordu pomocí Pythonu.

Vytvořte vodopádové grafy ve Wordu pomocí Pythonu.

Zkontrolujte, zda je bod vodopádového grafu celkem

Můžete zkontrolovat označení každého bodu pomocí series.is_total(index). Přidejte následující smyčku po volání chart.series.add(...) v předchozím příkladu:

for i in range(len(categories)):
    point_type = "Total" if series.is_total(i) else "Not a total"
    print(f"{categories[i]}: {values[i]} — {point_type}")

Pro ukázková data je očekávaný výstup:

Opening balance: 100 — Total
Sales: 40 — Not a total
Expenses: -20 — Not a total
Subtotal: 120 — Total
Other income: 10 — Not a total
Closing balance: 130 — Total

Metoda is_total() přijímá index začínající od nuly a vrací True, pokud je bod označen jako součet. Neurčuje, zda je bod počáteční zůstatek, mezisoučet nebo konečný součet.

Zkontrolujte celkovou hodnotu pomocí ChartDataPoint.is_total

Pokud již máte datový bod grafu, můžete přečíst jeho vlastnost is_total. Následující příklad kontroluje mezisoučet na indexu 3:

is_subtotal = series.data_points[3].is_total
print(f"Subtotal is a total: {is_subtotal}")

Expected output:

Subtotal is a total: True

ChartDataPoint.is_total je pouze pro čtení vlastnost pro vodopádové grafy. Stejně jako series.is_total(index), uvádí označení bodu; nenastavuje ani nepočítá celkovou hodnotu.

Prozkoumejte vodopádový graf v existujícím dokumentu Word

Můžete také načíst existující dokument Word a vyhledat v něm řady vodopádových grafů. Následující samostatný příklad kontroluje každý tvar, přeskočí tvary bez grafů a prozkoumá každou nalezenou řadu vodopádových grafů.

Nahraďte waterfall-chart.docx cestou k vašemu dokumentu:

import aspose.words as aw

# Load an existing Word document.
doc = aw.Document("waterfall-chart.docx")

found_waterfall_series = False

# Search the document's shapes.
shapes = doc.get_child_nodes(aw.NodeType.SHAPE, True)

for node in shapes:
    shape = node.as_shape()

if not shape.has_chart:
        continue

for series in shape.chart.series:
        if series.series_type != aw.drawing.charts.ChartSeriesType.WATERFALL:
            continue

found_waterfall_series = True
        print(f"Waterfall series: {series.name}")

for i in range(series.y_values.count):
            point_type = "Total" if series.is_total(i) else "Not a total"
            print(f"Point {i}: {point_type}")

if not found_waterfall_series:
    print("No waterfall chart series found.")

Příklad hlásí každý bod podle jeho nulového indexu. Zpracovává více vodopádových sérií, pokud jsou přítomny, a vypíše zprávu, pokud žádné nenajde. Vlastnost series_type umožňuje kódu zkontrolovat ChartSeriesType.WATERFALL před voláním is_total().

Získejte bezplatnou licenci

Můžete požádat o bezplatnou dočasnou licenci k vyzkoušení Aspose.Words for Python via .NET. Aplikujte licenci ve své aplikaci před spuštěním příkladů.

Závěr

Můžete vytvořit vodopádový graf v dokumentu Word pomocí Pythonu a programově identifikovat jeho celkové body. Použijte stejný přístup k přidání grafů do generovaných zpráv nebo k prozkoumání vodopádových sérií v existujících dokumentech.

Často kladené otázky

Jak vytvořit vodopádový graf ve Wordu pomocí Pythonu?

Vložte graf pomocí ChartType.WATERFALL, přidejte sérii s kategoriemi, hodnotami a příznaky celku a uložte dokument jako soubor DOCX.

Jak zadat celkové body ve vodopádovém grafu?

Při přidávání řady předávejte seznam typu Boolean argumentem is_subtotal. Nastavte položku na True pro každý bod, který by měl být označen jako celkový.

Jak mohu zjistit, zda je bod vodopádového grafu celkem?

Zavolejte series.is_total(index) s nulovým indexem bodu nebo přečtěte vlastnost is_total jeho objektu datového bodu.

Nastavují API is_total celkové hodnoty, nebo je vypočítávají?

Ne. Udává, zda je bod označen jako celkový. Poskytněte hodnoty a jejich příznaky celku při vytváření řady.

Mohu prohlédnout vodopádový graf v existujícím dokumentu Word?

Ano. Načtěte dokument, najděte tvary obsahující grafy, a před prozkoumáním jejich bodů zkontrolujte každou sérii na ChartSeriesType.WATERFALL.

Viz také