Создание диаграмм Санкея

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Диаграммы Санкея - это диаграммы потока, которые показывают движение ресурсов или энергии между различными этапами или системами. В этом руководстве мы будем использовать библиотеку Matplotlib в Python для создания диаграмм Санкея.

Советы по работе с ВМ

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

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импортируем необходимые библиотеки

Прежде чем начать создавать диаграммы Санкея, нам нужно импортировать необходимые библиотеки. В этом руководстве мы будем использовать библиотеку Matplotlib.

import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey

Создаем простую диаграмму Санкея

Начнем с создания простой диаграммы Санкея, которая демонстрирует, как использовать класс Sankey.

Sankey(flows=[0.25, 0.15, 0.60, -0.20, -0.15, -0.05, -0.50, -0.10],
       labels=['', '', '', 'First', 'Second', 'Third', 'Fourth', 'Fifth'],
       orientations=[-1, 1, 0, 1, 1, 1, 0, -1]).finish()
plt.title("The default settings produce a diagram like this.")

Этот код создаст диаграмму Санкея с параметрами по умолчанию, включая метки и ориентации потоков. Результат будет отображаться с заголовком "The default settings produce a diagram like this."

Настраиваем диаграмму Санкея

Мы можем настроить диаграмму Санкея, изменив потоки, метки, ориентации и другие параметры. В этом примере мы создадим диаграмму с более длинными путями и меткой посередине.

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
                     title="Flow Diagram of a Widget")
sankey = Sankey(ax=ax, scale=0.01, offset=0.2, head_angle=180,
                format='%.0f', unit='%')
sankey.add(flows=[25, 0, 60, -10, -20, -5, -15, -10, -40],
           labels=['', '', '', 'First', 'Second', 'Third', 'Fourth',
                   'Fifth', 'Hurray!'],
           orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0],
           pathlengths=[0.25, 0.25, 0.25, 0.25, 0.25, 0.6, 0.25, 0.25,
                        0.25],
           patchlabel="Widget\nA")  ## Arguments to matplotlib.patches.PathPatch
diagrams = sankey.finish()
diagrams[0].texts[-1].set_color('r')
diagrams[0].text.set_fontweight('bold')

Этот код создаст диаграмму Санкея с более длинными путями, меткой посередине и другими настроенными параметрами. Результат будет отображаться с заголовком "Flow Diagram of a Widget."

Соединяем две системы в диаграмме Санкея

Мы также можем соединить две системы в диаграмме Санкея. В этом примере мы создадим диаграмму с двумя соединенными системами.

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Two Systems")
flows = [0.25, 0.15, 0.60, -0.10, -0.05, -0.25, -0.15, -0.10, -0.35]
sankey = Sankey(ax=ax, unit=None)
sankey.add(flows=flows, label='one',
           orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0])
sankey.add(flows=[-0.25, 0.15, 0.1], label='two',
           orientations=[-1, -1, -1], prior=0, connect=(0, 0))
diagrams = sankey.finish()
diagrams[-1].patch.set_hatch('/')
plt.legend()

Этот код создаст диаграмму Санкея с двумя соединенными системами. Результат будет отображаться с заголовком "Two Systems."

Резюме

В этом руководстве мы узнали, как создавать диаграммы Санкея с использованием библиотеки Matplotlib в Python. Мы начали с простой диаграммы и затем настроили ее, изменив потоки, метки, ориентации и другие параметры. Мы также узнали, как соединить две системы в диаграмме Санкея. С этими инструментами мы можем создавать информативные и визуально привлекательные диаграммы потоков для различных приложений.