Функция Matplotlib errorbar()
Справочная документация Matplotlib
errorbar()Используется для построения линейных графиков с планками погрешностей, отображающих диапазон неопределенности измеренных значений в точках данных.
Широко используется в научных экспериментах, статистическом анализе и визуализации инженерных данных.
Определение функции
Интерфейс pyplot
matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt='',
ecolor=None, elinewidth=None, capsize=None, barsabove=False,
lolims=False, uplims=False, xlolims=False, xuplims=False,
errorevery=1, capthick=None, *, **kwargs)
Интерфейс Axes
Axes.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None,
elinewidth=None, capsize=None, barsabove=False, lolims=False,
uplims=False, xlolims=False, xuplims=False, errorevery=1,
capthick=None, *, **kwargs)
Описание параметра
| Параметр | Type | Описание |
|---|---|---|
| x, y | массивоподобный | Координаты точки данных |
| yerr / xerr | float или array-like | Погрешность в направлении y/x. Скаляр означает одинаковую погрешность для всех точек; массив означает независимые погрешности для каждой точки. Двумерный массив может задавать нижнюю и верхнюю погрешности как [lo, hi]. |
| fmt | str | Строка формата для точек данных, например 'o' (круг), 's' (квадрат), 'o-' (круг + линия). |
| ecolor | color | Цвет линий планок погрешностей. |
| elinewidth | float | Ширина линий планок погрешностей. |
| capsize | float | Длина концевых линий планок погрешностей (в точках). |
| capthick | float | Толщина концевых линий планок погрешностей. |
| barsabove | bool | Если True, планки погрешностей рисуются поверх точек данных. |
| lolims / uplims | массивоподобный объект из bool | Отметить нижний/верхний предел по направлению y (только односторонние стрелки). |
| xlolims / xuplims | массивоподобный объект из bool | Отметить нижний/верхний предел по направлению x. |
| errorevery | int | Рисовать планки погрешностей через каждые несколько точек данных (уменьшает визуальную загромождённость при плотных данных). |
errorbar() возвращает
ErrorbarContainerобъект, содержащий(plotline, caplines, barlinecols), позволяя отдельно получать доступ к основной линии и линиям планок погрешностей.
Примеры использования
Пример 1: базовые планки погрешностей
Пример
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([3.5, 5.2, 4.8, 6.1, 7.3])
y_err = np.array([0.3, 0.5, 0.4, 0.6, 0.5]) # Погрешность для каждой точки
fig, ax = plt.subplots(layout='constrained')
# Нарисовать линейный график с планками погрешностей
ax.errorbar(x, y, yerr=y_err,
fmt='o-', # Кружки + линия
color='steelblue',
ecolor='gray', # Цвет планок погрешностей
elinewidth=1.5, # Толщина линий планок погрешностей
capsize=5, # Длина концевых штрихов
capthick=1.5,
markersize=8,
label='Измерение')
ax.set_title('График с планками погрешностей по y')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Пример 2: Неравные погрешности (разные верхние и нижние)
Пример
import numpy as np
x = np.arange(5)
y = np.array([10, 12, 9, 15, 13])
# Двумерный массив: первая строка — погрешность нижней границы, вторая строка — погрешность верхней границы
y_err = np.array([[0.5, 0.8, 0.6, 1.0, 0.7], # Нижняя погрешность
[1.5, 1.2, 2.0, 0.8, 1.3]]) # Верхняя погрешность
fig, ax = plt.subplots(layout='constrained')
ax.errorbar(x, y, yerr=y_err,
fmt='s', # Квадратный маркер, без линии
color='coral',
ecolor='black',
capsize=6,
markersize=10,
markerfacecolor='white',
markeredgewidth=1.5,
label='Асимметричная ошибка')
ax.set_title('Асимметричные полосы ошибок (разные верхняя/нижняя)')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Пример 3: Двунаправленные полосы ошибок (ошибки в направлениях x и y)
Пример
import numpy as np
np.random.seed(42)
x = np.arange(8)
y = 2 * x + 1 + np.random.randn(8) * 2
x_err = np.full(8, 0.3) # ошибка по направлению x (одинаковая для всех точек)
y_err = np.random.rand(8) * 3 # ошибка по направлению y (разная для каждой точки)
fig, ax = plt.subplots(figsize=(7, 5), layout='constrained')
ax.errorbar(x, y,
xerr=x_err, # ошибка по направлению x
yerr=y_err, # ошибка по направлению y
fmt='o',
color='#8e44ad',
ecolor='gray',
capsize=4,
markersize=8,
label='Ошибка 2D')
ax.set_title('Усы погрешностей в направлениях X и Y')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Пример 4: использование errorevery для уменьшения визуального загромождения
Пример
import numpy as np
# Плотные точки данных (100 точек)
x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.randn(100) * 0.1
y_err = np.full(100, 0.15)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4),
layout='constrained')
# Левый график: показывать усы погрешностей для каждой точки (слишком плотно)
ax1.errorbar(x, y, yerr=y_err, fmt='o', markersize=3,
capsize=2, elinewidth=0.5, errorevery=1)
ax1.set_title('errorevery=1 (слишком плотно)')
# Правый график: показывать ус погрешности каждые 8 точек
ax2.errorbar(x, y, yerr=y_err, fmt='o', markersize=3,
capsize=2, elinewidth=0.5, errorevery=8)
ax2.set_title('errorevery=8 (более чистый)')
for ax in [ax1, ax2]:
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.grid(True, alpha=0.3)
plt.show()
Часто задаваемые вопросы
Различные формы yerr?
Скаляр: одна и та же ошибка для всех точек.
Одномерный массив (N,): симметричная ошибка для каждой точки (верхняя и нижняя совпадают).
Двумерный массив (2, N): первая строка — нижняя ошибка, вторая строка — верхняя ошибка.
Что делать, если вы не хотите линии между точками данных?
будетfmtЗадайте формат только с маркерами, например,'o'、's'、'^', опустив часть со стилем линии.
Другие расширения