Введение
В этом лабораторном занятии мы научимся использовать класс Sankey из модуля matplotlib.sankey для создания длинной цепи связей с использованием Python Matplotlib.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки и модули
Начнем с импорта необходимых библиотек и модулей. Будем использовать matplotlib.pyplot и matplotlib.sankey.
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
Определяем количество связей с каждой стороны
Далее определяем количество связей с каждой стороны в нашей цепи. В этом примере установим его равным 6.
links_per_side = 6
Определяем функцию side
Теперь определяем функцию side, которая генерирует боковую цепь.
def side(sankey, n=1):
"""Generate a side chain."""
prior = len(sankey.diagrams)
for i in range(0, 2*n, 2):
sankey.add(flows=[1, -1], orientations=[-1, -1],
patchlabel=str(prior + i),
prior=prior + i - 1, connect=(1, 0), alpha=0.5)
sankey.add(flows=[1, -1], orientations=[1, 1],
patchlabel=str(prior + i + 1),
prior=prior + i, connect=(1, 0), alpha=0.5)
Определяем функцию corner
Далее определяем функцию corner, которая генерирует угловую связь.
def corner(sankey):
"""Generate a corner link."""
prior = len(sankey.diagrams)
sankey.add(flows=[1, -1], orientations=[0, 1],
patchlabel=str(prior), facecolor='k',
prior=prior - 1, connect=(1, 0), alpha=0.5)
Создаем объекты figure и axis
Теперь создаем объекты figure и axis с использованием plt.subplots().
fig, ax = plt.subplots()
Создаем объект Sankey
Далее создаем объект Sankey с использованием объекта ax и устанавливаем unit равным None.
sankey = Sankey(ax=ax, unit=None)
Добавляем первый диаграмму
Добавляем первую диаграмму с использованием sankey.add() с flows=[1, -1] и orientations=[0, 1].
sankey.add(flows=[1, -1], orientations=[0, 1],
patchlabel="0", facecolor='k',
rotation=45)
Добавляем боковые цепи и угловые связи
Теперь добавляем боковые цепи и угловые связи с использованием функций side() и corner().
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
Завершаем и отображаем диаграмму Санки
Наконец, завершаем диаграмму Sankey с использованием sankey.finish() и отображаем ее с использованием plt.show().
sankey.finish()
plt.show()
Резюме
В этом практическом занятии мы узнали, как использовать класс Sankey из модуля matplotlib.sankey для создания длинной цепи связей с использованием Python и Matplotlib. Мы определили функции side и corner для генерации соответственно боковых цепей и угловых связей. Мы также добавили первую диаграмму, боковые цепи и угловые связи с использованием объекта Sankey и отобразили диаграмму с использованием plt.show().