Стили линий в Matplotlib

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

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

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

Введение

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

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

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

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

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

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

Для использования Matplotlib необходимо сначала импортировать библиотеку. Также импортируем библиотеку NumPy для генерации некоторых образцов данных для наших графиков.

import matplotlib.pyplot as plt
import numpy as np

Определяем стили линий

В Matplotlib существуют разные способы определения стилей линий. Мы можем использовать предопределенные стили, такие как 'solid' (прямая), 'dashed' (пунктирная), 'dotted' (точная) и 'dashdot' (пунктирно-прямая). Также можно определить пользовательские стили линий с использованием кортежа тире.

linestyle_str = [
     ('solid', 'solid'),      ## То же, что (0, ()) или '-'
     ('dotted', 'dotted'),    ## То же, что (0, (1, 1)) или ':'
     ('dashed', 'dashed'),    ## То же, что '--'
     ('dashdot', 'dashdot')]  ## То же, что '-.'

linestyle_tuple = [
     ('loosely dotted',        (0, (1, 10))),
     ('dotted',                (0, (1, 1))),
     ('densely dotted',        (0, (1, 1))),
     ('long dash with offset', (5, (10, 3))),
     ('loosely dashed',        (0, (5, 10))),
     ('dashed',                (0, (5, 5))),
     ('densely dashed',        (0, (5, 1))),

     ('loosely dashdotted',    (0, (3, 10, 1, 10))),
     ('dashdotted',            (0, (3, 5, 1, 5))),
     ('densely dashdotted',    (0, (3, 1, 1, 1))),

     ('dashdotdotted',         (0, (3, 5, 1, 5, 1, 5))),
     ('loosely dashdotdotted', (0, (3, 10, 1, 10, 1, 10))),
     ('densely dashdotdotted', (0, (3, 1, 1, 1, 1, 1)))]

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

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

def plot_linestyles(ax, linestyles, title):
    X, Y = np.linspace(0, 100, 10), np.zeros(10)
    yticklabels = []

    for i, (name, linestyle) in enumerate(linestyles):
        ax.plot(X, Y+i, linestyle=linestyle, linewidth=1.5, color='black')
        yticklabels.append(name)

    ax.set_title(title)
    ax.set(ylim=(-0.5, len(linestyles)-0.5),
           yticks=np.arange(len(linestyles)),
           yticklabels=yticklabels)
    ax.tick_params(left=False, bottom=False, labelbottom=False)
    ax.spines[:].set_visible(False)

    for i, (name, linestyle) in enumerate(linestyles):
        ax.annotate(repr(linestyle),
                    xy=(0.0, i), xycoords=ax.get_yaxis_transform(),
                    xytext=(-6, -12), textcoords='offset points',
                    color="blue", fontsize=8, ha="right", family="monospace")

Построение графика

Мы можем построить график, вызвав функцию plot_linestyles для каждой группы стилей линий.

fig, (ax0, ax1) = plt.subplots(2, 1, figsize=(10, 8), height_ratios=[1, 3])

plot_linestyles(ax0, linestyle_str[::-1], title='Named linestyles')
plot_linestyles(ax1, linestyle_tuple[::-1], title='Parametrized linestyles')

plt.tight_layout()
plt.show()

Интерпретация графика

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

Резюме

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