Функция plot() в Matplotlib
Справочная документация Matplotlib
plot()Это основная функция в Matplotlib, используемая для построения линейных графиков.
Она создаёт линии, соединяя заданные точки с координатами x и y, и поддерживает настройку цвета, стиля линии, маркера и толщины линии.
Определение функции
Интерфейс pyplot
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
Интерфейс Axes
Axes.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
Описание параметра
| Параметр | Type | Описание |
|---|---|---|
| *args | Переменные аргументы | Поддерживает несколько вариантов вызова: plot(y), plot(x, y), plot(x, y, 'fmt'), plot(x1, y1, 'fmt1', x2, y2, 'fmt2', ...) |
| scalex / scaley | bool | Указывает, следует ли автоматически масштабировать оси x/y для соответствия данным; по умолчанию — True |
| data | Индексируемый объект | Если указано, строки можно использовать как аргументы для ссылки на столбцы данных в нём. |
| color или c | color | Цвет линии, например, 'red', '#ff0000', 'tab:blue' |
| linestyle или ls | str | Стиль линии: '-' (сплошная), '--' (штриховая), '-.' (штрихпунктирная), ':' (точечная), '' (без линии) |
| linewidth или lw | float | Ширина линии, по умолчанию примерно 1.5 |
| marker | str | Маркеры точек данных: '.', 'o', 's', '^', '*', '+' (знак плюс), 'x' и т. д. |
| markersize или ms | float | Размер маркера |
| label | str | Подпись легенды, используется с legend() |
| альфа | float | Прозрачность, от 0 (полностью прозрачный) до 1 (полностью непрозрачный) |
| zorder | float | Порядок слоёв: чем больше значение, тем выше он отрисовывается |
Строка формата fmt состоит из трёх частей:
'[Color][Marker][Line Style]'например,'ro--'обозначает красный цвет, маркер в виде круга, штриховую линию. Порядок частей произвольный.
Распространённые сокращения цветов
| Символ | Цвет | Символ | Цвет |
|---|---|---|---|
| 'b' | Синий | 'r' | Красный |
| 'g' | Зелёный | 'c' | Циан |
| 'm' | Magenta | 'y' | Жёлтый |
| 'k' | Чёрный | 'w' | Белый |
Примеры использования
Пример 1: Простейший линейный график
Если переданы только значения y, x автоматически использует индексы, начиная с 0.
Пример
import numpy as np
# Сгенерировать 50 точек данных в диапазоне 0-10
x = np.linspace(0, 10, 50)
y = np.sin(x) # Функция синуса
# Простейший вызов: x, y
plt.plot(x, y)
plt.title('Простой линейный график')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.grid(True, alpha=0.3)
plt.show()
Пример 2: несколько кривых + строка формата
Нарисуйте несколько кривых на одном графике, используя разные цвета, стили линий и маркеры.
Пример
import numpy as np
x = np.linspace(0, 10, 50)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(x) * np.exp(-x / 3) # Затухающая синусоида
# Несколько кривых, каждая с разным форматом
plt.plot(x, y1, 'b-o', label='sin(x)') # Синяя сплошная линия + круглые маркеры
plt.plot(x, y2, 'r--s', label='cos(x)') # Красная штриховая линия + квадратные маркеры
plt.plot(x, y3, 'g-.^', label='затухающий sin(x)') # Зелёная штрихпунктирная линия + треугольные маркеры
plt.title('Несколько линий с разными стилями')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
Пример 3: Настройка стиля с помощью именованных аргументов
Используйте именованные аргументы для более тонкого контроля над внешним видом линии.
Пример
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')
# Используйте именованные аргументы вместо строки формата, это читабельнее
ax.plot(x, np.sin(x),
color='steelblue', # Название цвета
linestyle='-', # Сплошная линия
linewidth=2.5, # Толщина линии
marker='o', # Круговой маркер
markersize=4, # Размер маркера
markerfacecolor='red', # Цвет заливки маркера
markeredgecolor='black', # Цвет границы маркера
markeredgewidth=0.5, # Ширина границы маркера
alpha=0.8, # Общая прозрачность
label='sin(x)')
# Сравнение: штриховая линия без маркеров
ax.plot(x, np.cos(x),
color='#ff6600', # Шестнадцатеричный цвет
linestyle='--',
linewidth=2,
label='cos(x)')
ax.set_title('Настроенные стили линий', fontsize=14)
ax.set_xlabel('x (радианы)')
ax.set_ylabel('Амплитуда')
ax.legend(loc='upper right')
ax.grid(True, alpha=0.2)
plt.show()
print("пример: настроенный график отображён")
Пример 4: Использование параметра data (поддержка DataFrame)
Когда data является dict или pandas DataFrame, можно использовать строковые имена столбцов.
Пример
import numpy as np
# Организуйте данные в виде словаря
data = {
'time': np.arange(0, 10, 0.5),
'voltage': np.sin(np.arange(0, 10, 0.5)) * 5 + 10,
'current': np.cos(np.arange(0, 10, 0.5)) * 2 + 5,
}
fig, ax = plt.subplots(layout='constrained')
# Обращение к данным через параметр data + строковые имена столбцов
ax.plot('time', 'voltage', 'b-', data=data, label='Напряжение (V)')
ax.plot('time', 'current', 'r--', data=data, label='Ток (A)')
ax.set_title('Использование параметра data с именами столбцов')
ax.set_xlabel('Время (s)')
ax.set_ylabel('Значение')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Пример 5: Вызов на объекте Axes (рекомендуемый подход)
Использование объектно-ориентированного интерфейса Axes нагляднее в сценариях с несколькими подграфиками.
Пример
import numpy as np
x = np.linspace(0, 10, 100)
# Создать два подграфика рядом
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4),
layout='constrained')
# Левый подграфик: математическая функция
ax1.plot(x, np.sin(x), label='sin(x)')
ax1.plot(x, np.cos(x), label='cos(x)')
ax1.set_title('Математические функции')
ax1.legend()
ax1.grid(True, alpha=0.3)
# Правый подграфик: тренд данных
data = np.random.randn(100).cumsum() # Случайное блуждание
ax2.plot(data, color='teal', linewidth=1.5)
ax2.set_title('Случайное блуждание (накопленная сумма)')
ax2.set_xlabel('Шаг')
ax2.set_ylabel('Позиция')
ax2.grid(True, alpha=0.3)
plt.show()
ЧАВО
Порядок x и y в plot()
Стандартный вызов —plot(x, y), x идёт первым, y — после.
Если передан только один массив, напримерplot(y), то x автоматически принимается какrange(0, len(y))。
Как нарисовать разрывные отрезки линий?
Для данных, содержащих NaN, plot() автоматически разрывает линию на NaN, что можно использовать для рисования сегментированных линий.
Можно ли использовать строку fmt и именованные аргументы вместе?
Да, именованные аргументы переопределяют соответствующие настройки в строке fmt. Напримерplot(x, y, 'ro', color='blue')Здесь marker='o' берётся из fmt, но color будет переопределён на blue.
Другие расширения