Водопадный график показывает, как начальное значение изменяется в результате серии увеличений и уменьшений. Например, вы можете использовать его в финансовом отчете, чтобы показать, как продажи, расходы и другие доходы влияют на конечный баланс.

В этом руководстве вы создадите водопадную диаграмму в документе Word, используя Python и Aspose.Words for Python via .NET. Вы также узнаете, как определить общие точки на диаграмме и просмотреть водопадные диаграммы в существующих документах.

Библиотека Python для создания водопадных диаграмм в Word

Aspose.Words for Python via .NET позволяет вам создавать и изменять документы Word в Python. Вы можете использовать его для добавления диаграмм в отчёты и работы с сериями диаграмм и точками данных.

Установите библиотеку из PyPI:

pip install aspose-words

Используйте Aspose.Words for Python via .NET 26.10 or later для полного руководства. Эта версия представила API, используемые для проверки того, является ли точка водопадной диаграммы итоговой.

Для требований к платформе и других деталей установки см. документацию по установке.

Понимание примера водопадной диаграммы

В примерах используются следующие данные, чтобы показать изменения от начального баланса к конечному балансу:

КатегорияЗначениеТип точки
Начальный баланс100Итого
Продажи+40Увеличение
Расходы−20Уменьшение
Промежуточный итог120Итого
Прочий доход+10Увеличение
Конечный баланс130Итого

Показатели продаж, расходов и прочих доходов представляют изменения. Открывающий баланс, промежуточный итог и закрывающий баланс представляют значения на определённых этапах.

Чтобы создать серии диаграммы, вам нужно предоставить три списка в том же порядке:

  • Categories: Метки для точек диаграммы.
  • Values: Изменения и явно заданные общие значения.
  • Total flags: Булевы значения, обозначающие соответствующие точки как итоговые.

Флаги определяют общие баллы; они не вычисляют их. В этом примере промежуточная сумма указана как 120, а конечный остаток указан как 130.

Создание водопадной диаграммы в Word с помощью Python

Выполните следующие шаги, чтобы создать диаграмму:

  1. Создайте Document и DocumentBuilder.
  2. Вставьте диаграмму, используя ChartType.WATERFALL.
  3. Установите заголовок диаграммы и очистите серию по умолчанию.
  4. Добавьте категории, значения и флаги итогов.
  5. Сохраните документ в файл DOCX.

Следующий пример создает полный график:

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")

Метод add() специфичный для waterfall принимает имя серии, категории, значения и логические флаги. Каждый элемент с заданным индексом описывает одну и ту же точку диаграммы. Хотя логический аргумент называется is_subtotal, в документированном примере он используется для обозначения начального значения, промежуточного итога и конечного значения как итогов.

Полученный waterfall-chart.docx содержит шести‑точечную диаграмму, показывающую начальный остаток, изменения, промежуточный итог и конечный остаток.

Создание водопадных диаграмм в Word с помощью Python.

Создание водопадных диаграмм в Word с помощью Python.

Проверить, является ли точка водопадной диаграммы итоговой

Вы можете проверить назначение каждой точки с помощью series.is_total(index). Добавьте следующий цикл после вызова chart.series.add(...) в предыдущем примере:

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}")

Для примерных данных ожидаемый вывод:

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

Метод is_total() принимает индекс, начинающийся с нуля и возвращает True, если точка обозначена как итог. Он не определяет, является ли точка начальным остатком, промежуточным подытогом или окончательным итогом.

Проверка итога с помощью ChartDataPoint.is_total

Если у вас уже есть точка данных диаграммы, вы можете прочитать её свойство is_total. Следующий пример проверяет подытог по индексу 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 является только для чтения свойством для водопадных диаграмм. Как и series.is_total(index), оно сообщает о назначении точки; оно не устанавливает и не вычисляет общий итог.

Просмотр водопадной диаграммы в существующем документе Word

Вы также можете загрузить существующий документ Word и выполнить поиск в нём рядов водопадных диаграмм. Ниже приведён автономный пример, который проверяет каждую форму, пропускает формы без диаграмм и исследует каждый найденный ряд водопадной диаграммы.

Замените waterfall-chart.docx на путь к вашему документу:

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.")

Пример сообщает о каждой точке по её нулевому индексу. Он обрабатывает несколько серий waterfall, если они присутствуют, и выводит сообщение, если не находит ни одной. Свойство series_type позволяет коду проверять ChartSeriesType.WATERFALL перед вызовом is_total().

Получить бесплатную лицензию

Вы можете запросить бесплатную временную лицензию для оценки Aspose.Words for Python via .NET. Примените лицензию в вашем приложении перед запуском примеров.

Заключение

Вы можете создать водопадную диаграмму в документе Word с помощью Python и программно определить её общие точки. Используйте тот же подход, чтобы добавлять диаграммы в генерируемые отчёты или исследовать серии водопадных диаграмм в существующих документах.

Часто задаваемые вопросы

Как создать водопадную диаграмму в Word с помощью Python?

Вставьте диаграмму, используя ChartType.WATERFALL, добавьте серию с категориями, значениями и флагами итогов, и сохраните документ в формате DOCX.

Как указать общие баллы в водопадной диаграмме?

Передайте список булевых значений через аргумент is_subtotal при добавлении серии. Установите значение True для каждой точки, которую следует обозначить как итог.

Как проверить, является ли точка водопадной диаграммы итоговой?

Вызовите series.is_total(index) с нулевым индексом точки или прочитайте свойство is_total объекта её точки данных.

Устанавливают ли API is_total значения или вычисляют итоги?

Нет. Они сообщают, помечена ли точка как total. Укажите значения и их флаги total при создании серии.

Могу ли я просмотреть водопадную диаграмму в существующем документе Word?

Да. Загрузите документ, найдите формы, содержащие диаграммы, и проверьте каждый ряд на наличие ChartSeriesType.WATERFALL перед тем как исследовать его точки.

См. также