Водопадный график показывает, как начальное значение изменяется в результате серии увеличений и уменьшений. Например, вы можете использовать его в финансовом отчете, чтобы показать, как продажи, расходы и другие доходы влияют на конечный баланс.
В этом руководстве вы создадите водопадную диаграмму в документе 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
Выполните следующие шаги, чтобы создать диаграмму:
- Создайте
DocumentиDocumentBuilder. - Вставьте диаграмму, используя
ChartType.WATERFALL. - Установите заголовок диаграммы и очистите серию по умолчанию.
- Добавьте категории, значения и флаги итогов.
- Сохраните документ в файл 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.
Проверить, является ли точка водопадной диаграммы итоговой
Вы можете проверить назначение каждой точки с помощью 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 перед тем как исследовать его точки.
