5.1. Plot - график линии

Без преувеличения - это самый распространенный график и как он строится нам уже известно. Давайте разберемся с тем, как сделать эти графики более привлекательными.

Цвет линии

Цвет линии можно указать с помощью параметра color. Само значение цвета может быть из самых разных цветовых моделей:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.zeros(8)

fig, ax = plt.subplots()

# RGB:
ax.plot(x, color = (0.9, 0.2, 0.9))

# RGBA:
ax.plot(np.arange(-1, 7),
        color = (0.1, 0.2, 0.9, 0.5),
        linewidth = 12)

# hex RGB:
ax.plot(x + 1, color = '#0a0b0c')

# hex RGBA:
ax.plot(x + 2, color = '#0a0b0c3a')

# уровень серого в интервале [0, 1]:
ax.plot(x + 3, color = '0.3')

# ключ цвета из {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}:
ax.plot(x + 4, color = 'g')

# название цвета из X11/CSS4:
ax.plot(x + 5, color = 'indigo')

fig.set_figwidth(12)
fig.set_figheight(6)
fig.set_facecolor('mintcream')
ax.set_facecolor('whitesmoke')

plt.show()

Matplotlib plot цвет, толщина и прозрачность линии

Поддержка такого количества цветовых моделей позволяет выбирать именно ту, которая в данной ситуации наиболее удобна. Например, на лекции, я могу быстро установить цвет линии с помощью односимвольного ключа из {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}, но готовя график для презентации или публикации мне удобнее использовать X11/CSS4. В случае, когда цвет из X11/CSS4 не подходит, смотрю его код RGB и подгоняю до тех пор пока он меня не устроит. Некоторые мои знакомы подбирают цвета на специальных онлайн сервисах.

Наклоненная линия, цвет которой задан в модели RGBA увеличена в ширине, для наглядности ее прозрачности. Ширина линии задается с помощью параметра linewidth. Этот параметр часто применяется при изменении начертания линии:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 100)
y = np.sin(x)

fig, ax = plt.subplots()

#  Сплошная линия ('-' или 'solid',
#  установлен по умолчанию):
ax.plot(x, y,
        linestyle = '-',
        linewidth = 1,
        color = 'crimson')

# Пунктирная линия ('--' или 'dashed'):
ax.plot(x, y + 1,
        linestyle = '--',
        linewidth = 2,
        color = 'darkmagenta')

# Точка-тире ('-.' или 'dashdot'):
ax.plot(x, y + 2,
        linestyle = '-.',
        linewidth = 4,
        color = 'indigo')

# Точка-точка (':' или 'dotted'):
ax.plot(x, y + 3,
        linestyle = ':',
        linewidth = 6,
        color = 'darkblue')

fig.set_figwidth(12)
fig.set_figheight(6)
fig.set_facecolor('linen')
ax.set_facecolor('ivory')

plt.show()

Matplotlib plot цвет, толщина и начертание линии

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

Улучшить восприятие линии можно так же с помощью маркеров:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.zeros(10)

fig, ax = plt.subplots()

#  Вид (marker)и размер маркера (markersize):
ax.plot(x,
        marker = 'o',
        color = 'seagreen')
ax.plot(x + 1,
        marker = '^',
        markersize = 10,
        color = 'seagreen')
ax.plot(x + 2,
        marker = 's',
        markersize = 15,
        color = 'seagreen')
ax.plot(x + 3,
        marker = 'X',
        markersize = 20,
        color = 'seagreen')

#  Цвет маркера (markerfacecolor),
#  его края (markeredgecolor) и
#  толщина его края (markeredgewidth):
ax.plot(x + 5,
        marker = '^',
        markersize = 20,
        color = 'green',
        markerfacecolor = 'lawngreen',
        markeredgecolor = 'darkgreen',
        markeredgewidth = 3)
ax.plot(x + 6,
        marker = 's',
        markersize = 20,
        color = 'lime',
        linewidth = 4,
        markerfacecolor = 'lawngreen',
        markeredgecolor = 'limegreen',
        markeredgewidth = 5)
ax.plot(x + 7,
        marker = 'X',
        markersize = 20,
        color = 'teal',
        markerfacecolor = 'greenyellow',
        markeredgecolor = 'teal',
        markeredgewidth = 3)

fig.set_figwidth(12)
fig.set_figheight(6)
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()

Matplotlib plot marker: цвет области и края маркера, его размер и внешний вид