Функции Matplotlib

Matplotlib — самая широко используемая библиотека визуализации данных в Python, поддерживающая создание статических, анимированных и интерактивных графиков.

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


Два основных программных интерфейса

Matplotlib предоставляет два подхода к использованию, подходящих для разных сценариев.

Характеристика Интерфейс Axes (явный/объектно-ориентированный) Интерфейс pyplot (неявный/функциональный)
Использование Сначала создайте объекты Figure и Axes, затем вызывайте методы объектов. Прямой вызов функций модуля pyplot, неявная работа с текущей фигурой.
Применимые сценарии Сложные графики, несколько подграфиков, требуется точный контроль. Быстрое построение графиков, интерактивное исследование, простые графики.
Пример кода fig, ax = plt.subplots(); ax.plot(x, y) plt.plot(x, y); plt.title("Title")
Уровень рекомендации Рекомендуется(Понятнее, более управляемо) Подходит для простых сценариев и быстрого прототипирования.

Интерфейс Axes — официально рекомендуемый подход к программированию. Логика кода яснее и меньше подвержена ошибкам при работе с несколькими подграфиками и сложными графиками. Для быстрого ознакомления ниже перечислены как функции pyplot, так и соответствующие методы Axes.


Модуль pyplot — полный список функций

pyplot — это интерфейс верхнего уровня Matplotlib, предоставляющий возможность построения графиков в стиле MATLAB. Ниже перечислены все функции по официальным категориям.

1. Управление фигурами и осями

Функции для создания и управления Figure (холст) и Axes (система координат/подграфик).

ФункцияОписание
figure()Создать новый Figure или активировать существующий Figure.
subplots()РекомендуетсяСоздать Figure и набор подграфиков Axes.
subplot()Добавить один подграфик в текущий Figure (по индексу строки и столбца).
subplot2grid()Создать subplot в указанной позиции в сеточном макете.
subplot_mosaic()Создать сложный неравномерный макет, используя строки меток.
axes()Добавить Axes к текущему Figure.
gca()Получить текущий объект Axes.
gcf()Получить текущий объект Figure.
sca()Установить текущий Axes.
cla()Очистить текущий Axes.
clf()Очистить текущий Figure.
close()Закрыть окно Figure.
delaxes()Удалить указанный Axes из Figure.
fignum_exists()Проверить, существует ли Figure с указанным номером.
get_figlabels()Вернуть список меток всех Figure.
get_fignums()Вернуть список номеров всех Figure.
twinx()Создать вторую ось Y, имеющую общую ось X.
twiny()Создать вторую ось X, имеющую общую ось Y.

2. Основы построения графиков

Наиболее часто используемые функции построения диаграмм.

ФункцияОписание
plot()Построить линейный график (наиболее распространённый).
scatter()Построить точечную диаграмму с поддержкой отображения размера/цвета/прозрачности.
bar()Построить вертикальную столбчатую диаграмму.
barh()Построить горизонтальную столбчатую диаграмму.
bar_label()Добавить подписи значений к столбцам столбчатой диаграммы.
grouped_bar()Построить сгруппированную столбчатую диаграмму.
pie()Построить круговую диаграмму.
pie_label()Добавить подписи к круговой диаграмме.
stem()Построить стем-график (график-спички).
eventplot()Построить график событий (несколько горизонтальных линий, отмечающих позиции событий).
step()Построить ступенчатый график.
fill()Нарисовать закрашенные многоугольники.
fill_between()Закрасить область между двумя горизонтальными кривыми.
fill_betweenx()Закрасить область между двумя вертикальными кривыми.
stackplot()Построить накопленную диаграмму с областями.
broken_barh()Построить горизонтальную диаграмму с разрывами (в стиле диаграммы Ганта).
vlines()Нарисовать вертикальную опорную линию.
hlines()Нарисовать горизонтальную опорную линию.
errorbar()Построить линейный график с планками погрешностей.
loglog()Линейный график в логарифмическом масштабе по обеим осям.
semilogx()Линейный график с логарифмической осью x.
semilogy()Линейный график с логарифмической осью y.
polar()График в полярных координатах.

3. Линии диапазонов (Spans)

Нарисуйте горизонтальные и вертикальные опорные линии и заштрихованные области.

ФункцияОписание
axhline()Добавить горизонтальную линию, охватывающую Axes.
axhspan()Добавить горизонтальную затенённую полосу, охватывающую Axes.
axvline()Добавить вертикальную линию, охватывающую Axes.
axvspan()Добавить вертикальную затенённую полосу, охватывающую Axes.
axline()Добавить бесконечную прямую, проходящую через две точки.

4. Спектральный анализ

Функции для обработки сигналов и спектральной визуализации.

ФункцияОписание
acorr()Построить график автокорреляции.
xcorr()Построить график кросс-корреляции
angle_spectrum()Построить угловой спектр
magnitude_spectrum()Построить амплитудный спектр
phase_spectrum()Построить фазовый спектр
psd()Построить спектральную плотность мощности
csd()Построить взаимную спектральную плотность
cohere()Построить когерентность
specgram()Построить спектрограмму (частотно-временной график)

5. Статистические графики

Функции для построения статистических распределений.

ФункцияОписание
boxplot()Построение boxplot
violinplot()Построение скрипичной диаграммы
ecdf()Построение эмпирической кумулятивной функции распределения (ECDF)

6. Биннинг и гистограммы

ФункцияОписание
hist()Построение 1D-гистограммы
hist2d()Построение 2D-гистограммы
hexbin()Построение гексагональной диаграммы с биннингом
stairs()Построение ступенчатой гистограммы (новая версия, заменяющая ступенчатый режим hist)

7. Контурные линии

ФункцияОписание
contour()Построение контурных линий
contourf()Построение заполненных контуров
clabel()Добавить подписи к контурам

8. Двумерные массивы и изображения

Функции визуализации для отображения двумерных данных, матриц и изображений.

ФункцияОписание
imshow()Отобразить изображение или двумерный массив (тепловая карта)
matshow()Отобразить матрицу как изображение в новом Figure
pcolor()Построение псевдоцветной сетки (создаёт PolyCollection)
pcolormesh()Построение псевдоцветной сетки (создаёт QuadMesh, лучшая производительность)
spy()Построить шаблон ненулевых элементов разреженной матрицы
figimage()Разместить изображение на уровне Figure (не Axes)

9. Неструктурированные треугольные сетки

ФункцияОписание
triplot()Построить неструктурированную треугольную сетку
tripcolor()Построить псевдоцветный график на треугольной сетке
tricontour()Построить контурные линии на треугольной сетке
tricontourf()Построить заполненные контуры на треугольной сетке

10. Текст и аннотации

ФункцияОписание
text()Добавить текст в указанных координатах в Axes
figtext()Добавить текст в указанной позиции на Figure
annotate()Добавить аннотацию со стрелкой
arrow()Добавить стрелку
legend()Добавить легенду в Axes
figlegend()Добавить легенду на уровне Figure
table()Добавить таблицу в Axes

11. Векторные поля

ФункцияОписание
quiver()Построить векторное поле (quiver-график)
quiverkey()Добавить шкалу легенды к векторному полю
barbs()Построить график барбов (отображающий скорость и направление ветра в метеорологии)
streamplot()Построить линии тока

12. Настройка осей

Функции для установки пределов осей, делений, подписей и масштабов.

ФункцияОписание
title()Установить заголовок Axes
suptitle()Установить общий заголовок Figure
xlabel()Установить подпись оси x
ylabel()Установить подпись оси y
xlim()Получить или установить пределы оси x
ylim()Получить или установить пределы оси y
xscale()Установить масштаб оси x (linear/log/symlog/logit...)
yscale()Установить масштаб оси y (linear/log/symlog/logit...)
xticks()Получить или задать позиции и подписи делений оси x
yticks()Получить или задать позиции и подписи делений оси y
tick_params()Настроить внешний вид делений (направление, цвет, размер, поворот подписей и т. д.)
ticklabel_format()Установить формат подписей делений (экспоненциальная запись и т. д.)
locator_params()Управлять параметрами локатора делений
minorticks_on()Показать малые деления
minorticks_off()Скрыть малые деления
rgrids()Получить или задать радиальные линии сетки полярного графика
thetagrids()Получить или задать угловые линии сетки полярного графика
grid()Включить или отключить линии сетки
axis()Удобная функция для получения или задания некоторых свойств оси
box()Включить или выключить линии границы осей
autoscale()Автоматически масштабировать оси по данным

13. Компоновка

Функции для управления расположением и интервалами подграфиков.

ФункцияОписание
subplots_adjust()Вручную настраивать отступы подграфиков (left/right/top/bottom/wspace/hspace)
tight_layout()Автоматически настраивать параметры подграфиков для плотной компоновки
margins()Задать или получить поля данных осей
subplot_tool()Запустить окно интерактивного инструмента настройки подграфиков

14. Цветовая карта

Функции, связанные с цветовыми картами и цветовыми шкалами.

ФункцияОписание
colorbar()Добавить цветовую шкалу
clim()Задать диапазон данных цветовой карты
get_cmap()Получить объект цветовой карты с указанным именем
set_cmap()Задать цветовую карту по умолчанию
gci()Получить текущий объект изображения, поддерживающий цветовую карту
sci()Установить текущий объект изображения с возможностью применения цветовой карты
imread()Считать изображение из файла в массив
imsave()Сохранить массив как файл изображения
colormapsОбъект реестра цветовых карт
color_sequencesОбъект реестра цветовых последовательностей

15. Конфигурация

Функции для управления глобальными параметрами конфигурации Matplotlib.

ФункцияОписание
rc()Установить параметры rc (можно задать пакетно)
rc_context()Контекстный менеджер для временной установки параметров rc
rcdefaults()Восстановить все параметры rc до значений по умолчанию

16. Вывод и взаимодействие

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

ФункцияОписание
show()Отобразить все открытые фигуры
savefig()Сохранить текущий Figure в файл
draw()Принудительно перерисовать текущий Figure
draw_if_interactive()Отрисовать Figure, если включён интерактивный режим
pause()Приостановить на указанное количество секунд (с обработкой событий во время паузы)
ion()Включить интерактивный режим
ioff()Выключить интерактивный режим
isinteractive()Возвращает, включен ли в данный момент интерактивный режим
install_repl_displayhook()Установить хук отображения REPL (для автоматического отображения Figure)
uninstall_repl_displayhook()Удалить хук отображения REPL
switch_backend()Переключить бэкенд

17. Другие служебные функции

ФункцияОписание
connect()Привязать функцию обратного вызова события
disconnect()Отвязать функцию обратного вызова события
ginput()Получить координатные точки с помощью щелчков мыши
waitforbuttonpress()Ожидать нажатия мыши или клавиши, вернуть тип события
findobj()Найти объекты Artist, соответствующие указанным условиям
get()Получить значение свойства объекта Artist
getp()Получить свойства объекта Artist (псевдоним get)
setp()Установить свойства объекта Artist
get_current_fig_manager()Получить оконный менеджер текущего Figure
new_figure_manager()Создать новый менеджер Figure для указанного Figure
set_loglevel()Установить уровень логирования Matplotlib
xkcd()Переключиться на стиль xkcd (нарисованный от руки комикс)

Объект Axes — полный список методов

Axes (объект Axes) представляет собой подграфик внутри Figure, содержащий данные, отметки, метки, заголовки и т. д. Ниже полностью перечислены все методы в соответствии с официальной классификацией.

1. Базовые методы построения графиков

МетодОписание
Axes.plot()Линейный график
Axes.scatter()Точечная диаграмма
Axes.bar()Вертикальная столбчатая диаграмма
Axes.barh()Горизонтальная столбчатая диаграмма
Axes.bar_label()Добавить подписи значений на столбцах
Axes.grouped_bar()Сгруппированная столбчатая диаграмма
Axes.pie()Круговая диаграмма
Axes.pie_label()Подписи круговой диаграммы
Axes.stem()Стеблевая диаграмма
Axes.eventplot()График событий
Axes.step()Ступенчатый график
Axes.fill()Заливка многоугольников
Axes.fill_between()Область горизонтальной заливки
Axes.fill_betweenx()Область вертикальной заливки
Axes.stackplot()Диаграмма с областями с накоплением
Axes.broken_barh()Горизонтальная диаграмма с разрывами
Axes.vlines()Вертикальная опорная линия
Axes.hlines()Горизонтальная опорная линия
Axes.errorbar()Линейный график с планками погрешностей
Axes.loglog()Логарифмический масштаб по обеим осям
Axes.semilogx()Логарифмический масштаб по оси x
Axes.semilogy()логарифмический масштаб по оси y

2. Методы линий диапазона

МетодОписание
Axes.axhline()Горизонтальная опорная линия
Axes.axvline()Вертикальная опорная линия
Axes.axhspan()Горизонтальная затенённая полоса
Axes.axvspan()Вертикальная затенённая полоса
Axes.axline()Бесконечная линия через две точки

3. Методы спектрального анализа

МетодОписание
Axes.acorr()График автокорреляции
Axes.xcorr()График взаимной корреляции
Axes.angle_spectrum()Угловой спектр
Axes.magnitude_spectrum()Амплитудный спектр
Axes.phase_spectrum()Фазовый спектр
Axes.psd()Спектральная плотность мощности
Axes.csd()Взаимная спектральная плотность
Axes.cohere()Когерентность
Axes.specgram()Спектрограмма (частотно-временной график)

4. Статистические методы

МетодОписание
Axes.boxplot()Ящичная диаграмма
Axes.bxp()Построить ящичную диаграмму по предварительно вычисленной статистике
Axes.violinplot()Скрипичная диаграмма
Axes.violin()Построить скрипичную диаграмму по предварительно вычисленным статистикам
Axes.ecdf()Эмпирическая функция распределения

5. Методы разбиения на интервалы и гистограммы

МетодОписание
Axes.hist()Гистограмма
Axes.hist2d()Двумерная гистограмма
Axes.hexbin()Диаграмма Hexbin
Axes.stairs()Ступенчатая гистограмма

6. Методы контуров

МетодОписание
Axes.contour()Контур
Axes.contourf()Заполненный контур
Axes.clabel()Подписи контуров

7. Методы двумерных массивов

МетодОписание
Axes.imshow()Отображение изображения/тепловой карты
Axes.matshow()Изображение матрицы
Axes.pcolor()Псевдоцветная сетка (PolyCollection)
Axes.pcolorfast()Быстрый псевдоцвет (отрисовывается с помощью imshow)
Axes.pcolormesh()Псевдоцветная сетка (QuadMesh, рекомендуется)
Axes.spy()Шаблон разреженной матрицы

8. Методы неструктурированной треугольной сетки

МетодОписание
Axes.triplot()Линии треугольной сетки
Axes.tripcolor()Псевдоцвет треугольной сетки
Axes.tricontour()Контур треугольной сетки
Axes.tricontourf()Заполненный контур треугольной сетки

9. Методы текста и аннотаций

МетодОписание
Axes.text()Добавить текст
Axes.annotate()Добавить аннотацию со стрелкой
Axes.table()Добавить таблицу
Axes.arrow()Добавить стрелку
Axes.inset_axes()Создать вложенные оси внутри Axes
Axes.indicate_inset()Отметить область врезных осей на родительском Axes
Axes.indicate_inset_zoom()Отметить увеличенную область врезных осей
Axes.secondary_xaxis()Добавить вторичную ось X (отображать те же данные в другом месте)
Axes.secondary_yaxis()Добавить вторичную ось y

10. Методы векторного поля

МетодОписание
Axes.quiver()Векторное поле (стрелочная диаграмма)
Axes.quiverkey()Масштабная линейка легенды векторного поля
Axes.barbs()График ветровых барбов
Axes.streamplot()График линий тока

11. Методы очистки

МетодОписание
Axes.cla()Очистить всё содержимое в Axes
Axes.clear()Очистить Axes (то же, что cla())

12. Методы оформления

МетодОписание
Axes.axis()Установить видимость оси или диапазон
Axes.set_axis_off()Скрыть оси
Axes.set_axis_on()Показать оси
Axes.set_frame_on()Показать рамку Axes
Axes.get_frame_on()Получить, видима ли рамка
Axes.set_axisbelow()Установить, находятся ли сетка/деления под данными
Axes.get_axisbelow()Получить слой сетки/делений
Axes.grid()Установить линии сетки
Axes.get_facecolor()Получить цвет фона Axes
Axes.set_facecolor()Установить цвет фона Axes

13. Циклирование свойств

МетодОписание
Axes.set_prop_cycle()Установить цикл свойств для цветов/стилей линий и т. д.

14. Управление осями и делениями

Доступ к осям:

МетодОписание
Axes.xaxis / Axes.yaxisПолучить объект Axis для оси x/y (свойство)
Axes.get_xaxis() / get_yaxis()Получить объект Axis для оси x/y

Диапазон и направление оси:

МетодОписание
Axes.set_xlim() / get_xlim()Задать/получить диапазон оси x
Axes.set_ylim() / get_ylim()Установка/получение диапазона оси y
Axes.set_xbound() / get_xbound()Установка/получение нижней и верхней границ оси x
Axes.set_ybound() / get_ybound()Установка/получение нижней и верхней границ оси y
Axes.invert_xaxis()Инвертировать направление оси x
Axes.invert_yaxis()Инвертировать направление оси y
Axes.xaxis_inverted() / yaxis_inverted()Запросить, инвертирована ли ось
Axes.set_xinverted() / get_xinverted()Установить/получить, инвертирована ли ось x
Axes.set_yinverted() / get_yinverted()Установить/получить, инвертирована ли ось y
Axes.update_datalim()Расширить пределы данных новыми точками данных

Подписи осей и легенда:

МетодОписание
Axes.set_xlabel() / get_xlabel()Установить/получить подпись оси x
Axes.set_ylabel() / get_ylabel()Установить/получить подпись оси y
Axes.label_outer()Оставлять подписи делений только на самых внешних подграфиках
Axes.set_title() / get_title()Установить/получить заголовок Axes
Axes.legend()Добавить легенду
Axes.get_legend()Получить текущий объект легенды
Axes.get_legend_handles_labels()Получить дескрипторы и метки легенды

Масштаб оси:

МетодОписание
Axes.set_xscale() / get_xscale()Установить/получить масштаб оси X
Axes.set_yscale() / get_yscale()Установить/получить масштаб оси y

Автоматическое масштабирование и отступы:

МетодОписание
Axes.autoscale()Автоматически масштабировать область просмотра под данные
Axes.autoscale_view()Автоматически масштабировать только область просмотра (без изменения отступов)
Axes.margins()Установить или получить отступы данных
Axes.relim()Пересчитать пределы данных на основе текущих Artists
Axes.use_sticky_edges()Использовать прилипающие края
Axes.set_xmargin() / get_xmargin()Установить/получить отступ по оси X
Axes.set_ymargin() / get_ymargin()Установить/получить отступ по оси Y
Axes.set_autoscale_on() / get_autoscale_on()Установить/получить, выполнять ли автоматическое масштабирование
Axes.set_autoscalex_on() / get_autoscalex_on()Задать/получить, включено ли автоматическое масштабирование оси x
Axes.set_autoscaley_on() / get_autoscaley_on()Задать/получить, включено ли автоматическое масштабирование оси y

Соотношение сторон:

МетодОписание
Axes.set_aspect() / get_aspect()Задать/получить соотношение сторон осей ('equal'/'auto'/число)
Axes.set_box_aspect() / get_box_aspect()Установить/получить соотношение сторон прямоугольной области Axes
Axes.apply_aspect()Применить текущую настройку соотношения сторон
Axes.set_adjustable() / get_adjustable()Установить/получить регулируемое направление ('box'/'datalim')

Деления и подписи делений:

МетодОписание
Axes.set_xticks() / get_xticks()Установить/получить позиции делений по оси x
Axes.set_yticks() / get_yticks()Установка/получение позиций делений по оси Y
Axes.set_xticklabels() / get_xticklabels()Установка/получение подписей делений по оси X
Axes.set_yticklabels() / get_yticklabels()Установка/получение подписей делений по оси Y
Axes.get_xmajorticklabels()Получение подписей основных делений по оси X
Axes.get_xminorticklabels()Получение подписей минорных делений по оси X
Axes.get_ymajorticklabels()Получение подписей основных делений по оси Y
Axes.get_yminorticklabels()Получить подписи малых делений оси y
Axes.get_xgridlines()Получить линии сетки оси x
Axes.get_ygridlines()Получить линии сетки оси y
Axes.get_xticklines()Получить линии делений оси x
Axes.get_yticklines()Получить линии делений оси y
Axes.xaxis_date()Установить для делений оси x формат даты
Axes.yaxis_date()Установить деления оси Y в формате даты
Axes.minorticks_on()Показать малые деления
Axes.minorticks_off()Скрыть малые деления
Axes.ticklabel_format()Задать формат подписей делений
Axes.tick_params()Настроить параметры внешнего вида делений
Axes.locator_params()Управлять параметрами локатора делений

15. Единицы

МетодОписание
Axes.convert_xunits()Преобразовать значения x с помощью преобразователя единиц
Axes.convert_yunits()Преобразовать значения y с помощью преобразователя единиц
Axes.have_units()Проверить, зарегистрирован ли преобразователь единиц

16. Добавление Artist-объектов

МетодОписание
Axes.add_artist()Добавить произвольный объект Artist
Axes.add_child_axes()Добавить дочерний объект Axes
Axes.add_collection()Добавить объект Collection
Axes.add_container()Добавить объект Container
Axes.add_image()Добавить объект AxesImage
Axes.add_line()Добавить объект Line2D
Axes.add_patch()Добавить объект Patch
Axes.add_table()Добавить объект Table

17. Двойные оси и общие оси

МетодОписание
Axes.twinx()Создать двойную ось Y с общей осью X
Axes.twiny()Создать парную ось x с общей осью y
Axes.sharex()Сделать ось x общей с другими объектами Axes
Axes.sharey()Сделать ось y общей с другими объектами Axes
Axes.get_shared_x_axes()Получить объект Grouper для общих осей x
Axes.get_shared_y_axes()Получить объект Grouper для общих осей y

18. Позиция Axes

МетодОписание
Axes.get_position() / set_position()Получить/задать позицию и размер Axes в Figure
Axes.get_anchor() / set_anchor()Получить/задать точку привязки (фиксированное положение) Axes
Axes.get_axes_locator() / set_axes_locator()Получить/задать функцию обратного вызова локатора Axes
Axes.get_subplotspec() / set_subplotspec()Получить/задать объект SubplotSpec
Axes.reset_position()Сбросить положение Axes до исходного значения

19. Асинхронность/События

МетодОписание
Axes.staleПометить, нуждается ли Artist в перерисовке (свойство)
Axes.pchanged()Уведомить о событии изменения свойства
Axes.add_callback()Добавить обратный вызов изменения свойства
Axes.remove_callback()Удалить обратный вызов изменения свойства

20. Взаимодействие

МетодОписание
Axes.can_pan() / can_zoom()Возвращает, включены ли панорамирование/масштабирование
Axes.set_navigate() / get_navigate()Установить/получить, активна ли панель навигации
Axes.set_navigate_mode() / get_navigate_mode()Установить/получить режим навигации
Axes.start_pan() / drag_pan() / end_pan()Начало/перетаскивание/завершение операции панорамирования
Axes.format_coord()Форматировать строку координат, отображаемую на панели инструментов
Axes.format_cursor_data()Форматировать значение данных в позиции курсора
Axes.format_xdata() / format_ydata()Форматировать значения данных x/y
Axes.mouseover()Определить, находится ли мышь над Axes
Axes.in_axes()Определить, находится ли точка внутри Axes
Axes.contains() / contains_point()Определить, содержит ли Artist точку
Axes.get_cursor_data()Получить данные в позиции курсора
Axes.get_forward_navigation_events() / set_forward_navigation_events()Получить/установить перенаправление событий навигации

21. Запрос дочерних элементов

МетодОписание
Axes.get_children()Получить все дочерние Artist
Axes.get_images()Получить все объекты изображений
Axes.get_lines()Получить все объекты линий
Axes.findobj()Найти дочерние Artists, соответствующие условию

22. Рисование

МетодОписание
Axes.draw()Отрисовать Axes
Axes.draw_artist()Нарисовать один Artist (низкоуровневый метод)
Axes.redraw_in_frame()Перерисовать внутри кадра
Axes.get_window_extent()Получить границы Axes в окне отображения
Axes.get_tightbbox()Получить точную ограничивающую рамку Axes
Axes.get_rasterization_zorder() / set_rasterization_zorder()Получить/задать порог zorder для растрирования

23. Проекция (должна быть переопределена в подклассах)

МетодОписание
Axes.nameИмя проекции (например, 'rectilinear', 'polar')
Axes.get_xaxis_transform() / get_yaxis_transform()Получить преобразование оси x/y
Axes.get_data_ratio()Получить соотношение сторон данных
Axes.get_xaxis_text1_transform()Преобразование нижней подписи оси x
Axes.get_xaxis_text2_transform()Преобразование верхней метки оси x
Axes.get_yaxis_text1_transform()Преобразование левой метки оси y
Axes.get_yaxis_text2_transform()Преобразование правой метки оси y

24. Другие методы

МетодОписание
Axes.set()Пакетная установка свойств
Axes.zorderПолучение/установка zorder (свойство)
Axes.get_figure()Получить родительский объект Figure
Axes.figureРодительский объект Figure (свойство)
Axes.remove()Удалить себя из Figure
Axes.has_data()Проверить наличие данных
Axes.get_default_bbox_extra_artists()Получить artists для дополнительного включения в вычисление ограничивающей рамки
Axes.get_transformed_clip_path_and_affine()Получить преобразованный путь отсечения
Axes.viewLimПределы отображения (свойство)
Axes.dataLimПределы данных (свойство)
Axes.spinesСловарь Spine (свойство)

Объект Figure — полный список методов

Figure — это контейнер верхнего уровня всего графика, управляющий всеми Axes, Artists и компоновкой.

1. Добавление Axes и SubFigure

МетодОписание
Figure.subplots()РекомендуетсяСоздать сетку подграфиков Axes
Figure.add_subplot()Добавить один подграфик в заданной позиции строки/столбца
Figure.add_axes()Добавить Axes в указанной позиции и с указанным размером
Figure.subplot_mosaic()Создать сложные компоновки подграфиков с использованием макета на основе меток
Figure.add_gridspec()Добавить объект макета GridSpec
Figure.subfigures()Создать вложенный SubFigure
Figure.add_subfigure()Добавить одну SubFigure
Figure.axesСписок Axes (свойство)
Figure.get_axes()Получить все Axes
Figure.delaxes()Удалить указанные Axes

2. Сохранение

МетодОписание
Figure.savefig()Сохранить Figure в файл

3. Аннотации уровня Figure

МетодОписание
Figure.suptitle() / get_suptitle()Установить/получить suptitle Figure
Figure.supxlabel() / get_supxlabel()Установить/получить подпись оси X уровня Figure
Figure.supylabel() / get_supylabel()Установить/получить подпись оси Y уровня Figure
Figure.colorbar()Добавить цветовую шкалу
Figure.legend()Добавить глобальную легенду
Figure.text()Добавить текст на уровне Figure
Figure.align_labels()Выровнять подписи осей всех подграфиков
Figure.align_xlabels()Выровнять подписи оси X всех подграфиков
Figure.align_ylabels()Выровнять подписи оси Y всех подграфиков
Figure.align_titles()Выровнять заголовки всех подграфиков
Figure.autofmt_xdate()Автоматически поворачивать подписи делений даты

4. Геометрия Figure

МетодОписание
Figure.set_size_inches() / get_size_inches()Установить/получить размер Figure (в дюймах)
Figure.set_figheight() / get_figheight()Установить/получить высоту Figure
Figure.set_figwidth() / get_figwidth()Задать/получить ширину Figure
Figure.dpiРазрешение DPI (свойство)
Figure.set_dpi() / get_dpi()Установить/получить DPI

5. Компоновка подграфиков

МетодОписание
Figure.subplots_adjust()Настроить интервалы между подграфиками вручную
Figure.set_layout_engine()Установить движок компоновки ('constrained'/'compressed'/'none')
Figure.get_layout_engine()Получить текущий движок компоновки
Figure.tight_layout()Автоматическая плотная компоновка (устарело)
Figure.set_tight_layout() / get_tight_layout()Задать/получить tight_layout (устарело)
Figure.set_constrained_layout() / get_constrained_layout()Задать/получить constrained_layout (устарело)
Figure.set_constrained_layout_pads() / get_constrained_layout_pads()Задать/получить отступы constrained_layout (устарело)

6. Взаимодействие

МетодОписание
Figure.ginput()Получить координатные точки с помощью щелчков мыши
Figure.waitforbuttonpress()Ожидать нажатия мыши или клавиатуры
Figure.pick()Инициировать событие pick
Figure.add_axobserver()Добавить наблюдателя за Axes

7. Изменение внешнего вида

МетодОписание
Figure.set_frameon() / get_frameon()Установить/получить, виден ли фон Figure
Figure.set_linewidth() / get_linewidth()Задать/получить ширину линии рамки Figure
Figure.set_facecolor() / get_facecolor()Установить/получить цвет фона Figure
Figure.set_edgecolor() / get_edgecolor()Задать/получить цвет рамки Figure

8. Добавление и получение Artist

МетодОписание
Figure.add_artist()Добавить произвольный Artist
Figure.figimage()Разместить изображение на уровне Figure
Figure.get_children()Получить все дочерние Artist

9. Управление состоянием

МетодОписание
Figure.clear()Очистить Figure
Figure.gca()Получить текущие Axes
Figure.sca()Установить текущий Axes
Figure.show()Показать Figure
Figure.draw()Отрисовать Figure
Figure.draw_artist()Нарисовать отдельный Artist
Figure.draw_without_rendering()Вычислить компоновку без отрисовки (для получения информации о размере)
Figure.set_canvas()Установить canvas
Figure.get_tightbbox()Получить точную ограничивающую рамку Figure
Figure.get_window_extent()Получить границы Figure в окне отображения

10. Вспомогательные функции

ФункцияОписание
figaspect()Вычислить размер Figure на основе указанного соотношения сторон

Объект SubFigure — список методов

SubFigure — это логическая дочерняя Figure, вложенная в родительскую Figure, с методами, аналогичными Figure.

Добавление Axes

МетодОписание
SubFigure.subplots()Создать сетку subplot
SubFigure.add_subplot()Добавить один подграфик
SubFigure.add_axes()Добавить Axes в указанной позиции
SubFigure.subplot_mosaic()Подграфики с компоновкой на основе меток
SubFigure.add_gridspec()Добавить GridSpec
SubFigure.subfigures()Создать более глубоко вложенную SubFigure
SubFigure.add_subfigure()Добавить одну SubFigure
SubFigure.delaxes()Удалить Axes

Аннотации

МетодОписание
SubFigure.suptitle() / get_suptitle()SubFigure suptitle
SubFigure.supxlabel() / get_supxlabel()Подпись оси x SubFigure
SubFigure.supylabel() / get_supylabel()Подпись оси y SubFigure
SubFigure.colorbar()Цветовая шкала
SubFigure.legend()Легенда
SubFigure.text()Текст
SubFigure.align_labels()Выровнять подписи
SubFigure.align_xlabels() / align_ylabels()Выровнять подписи x/y
SubFigure.align_titles()Выровнять заголовки

Artist и внешний вид

МетодОписание
SubFigure.add_artist()Добавить Artist
SubFigure.get_children()Получить дочерние Artists
SubFigure.set_frameon() / get_frameon()Установить/получить рамку
SubFigure.set_linewidth() / get_linewidth()Установить/получить ширину линии
SubFigure.set_facecolor() / get_facecolor()Установить/получить цвет фона
SubFigure.set_edgecolor() / get_edgecolor()Установить/получить цвет рамки
SubFigure.set_dpi() / get_dpi()Установить/получить DPI

Краткая справка по настройке стиля

Встроенные таблицы стилей

С помощьюplt.style.use('name')переключения стилей.

Название стиляОписание
defaultСтиль по умолчанию, чистый и нейтральный
ggplotИмитирует стиль R ggplot2, серый фон с белой сеткой
seaborn-v0_8Современный стиль, похожий на библиотеку seaborn
seaborn-v0_8-brightЯркая палитра seaborn
seaborn-v0_8-colorblindПалитра seaborn, удобная для людей с нарушением цветовосприятия
seaborn-v0_8-darkтёмный стиль seaborn
seaborn-v0_8-dark-paletteпалитра seaborn deep
seaborn-v0_8-darkgridстиль darkgrid в seaborn
seaborn-v0_8-deepтёмная палитра seaborn
seaborn-v0_8-mutedпалитра muted seaborn
seaborn-v0_8-notebookстиль seaborn notebook
seaborn-v0_8-paperстиль seaborn paper
seaborn-v0_8-pastelпалитра pastel seaborn
seaborn-v0_8-posterстиль seaborn poster
seaborn-v0_8-talkстиль seaborn talk
seaborn-v0_8-ticksстиль seaborn ticks
seaborn-v0_8-whiteстиль white в seaborn
seaborn-v0_8-whitegridстиль whitegrid в seaborn
fivethirtyeightИмитирует стиль журналистики данных FiveThirtyEight
dark_backgroundТемный фон, подходит для презентаций и использования ночью
bmhСтиль Bayesian Methods for Hackers
grayscaleСтиль в градациях серого, подходит для черно-белой печати
classicКлассический стиль Matplotlib v1.x
fastУпрощенный стиль, более быстрый рендеринг
Solarize_Light2Светлая тема Solarized
tableau-colorblind10Палитра Tableau, удобная для дальтоников

Общие конфигурации rcParams

ParametersОписаниеПримеры значений
figure.figsizeРазмер фигуры по умолчанию (в дюймах)[8, 6]
figure.dpiРазрешение по умолчанию100
figure.facecolorЦвет фона фигуры'white'
figure.edgecolorЦвет границы Figure'white'
font.sizeГлобальный размер шрифта12
font.familyСемейство шрифтов'sans-serif'
font.sans-serifСписок шрифтов sans-serif['DejaVu Sans', ...]
axes.titlesizeРазмер шрифта заголовка'large'
axes.labelsizeРазмер шрифта подписи оси'medium'
axes.gridПоказывать ли сетку по умолчаниюFalse
axes.facecolorЦвет фона осей'white'
axes.spines.topОтображать ли верхнюю границуTrue
axes.spines.rightОтображать ли правую границуTrue
lines.linewidthШирина линии по умолчанию1.5
lines.markersizeРазмер маркера по умолчанию6
lines.linestyleСтиль линии по умолчанию'-'
legend.locРасположение легенды по умолчанию'best'
legend.fontsizeРазмер шрифта легенды'medium'
xtick.labelsizeРазмер подписей делений по оси x'medium'
ytick.labelsizeразмер подписей делений по оси Y'medium'
savefig.dpiРазрешение по умолчанию для сохранения изображений'figure'
savefig.bboxРежим ограничивающей рамки при сохраненииОтсутствует
image.cmapЦветовая карта по умолчанию'viridis'
image.interpolationМетод интерполяции изображения'antialiased'

Краткий справочник по цветовым картам

КатегорияНазвание цветовой картыПрименимые сценарии
Перцептуально однородные (последовательные)viridis, plasma, inferno, magma, cividisНепрерывные данные, дружественная к дальтоникам, рекомендуется в качестве основного выбора
Последовательная (одноцветный градиент)Greys, Purples, Blues, Greens, Oranges, Reds, YlOrBr, YlOrRd, OrRd, PuRd, RdPu, BuPu, GnBu, PuBu, YlGnBu, PuBuGn, BuGn, YlGnНепрерывные данные от низкого к высокому, один оттенок
ДивергентныеPiYG, PRGn, BrBG, PuOr, RdGy, RdBu, RdYlBu, RdYlGn, Spectral, coolwarm, bwr, seismicДвунаправленные данные с центральной точкой отсчёта
Циклическиеtwilight, twilight_shifted, hsvПериодические данные (например, углы, время)
КачественныеPastel1, Pastel2, Paired, Accent, Dark2, Set1, Set2, Set3, tab10, tab20, tab20b, tab20cДискретные категориальные данные
Разноеflag, prism, ocean, gist_earth, terrain, gist_stern, gnuplot, gnuplot2, CMRmap, cubehelix, brg, gist_rainbow, rainbow, jet, turbo, nipy_spectral, gist_ncarСпециального назначения или визуальные эффекты

'viridis'Это цветовая карта по умолчанию начиная с Matplotlib 2.0, с превосходной перцептивной равномерностью и характеристиками, дружественными к дальтоникам, и лучший выбор для большинства сценариев. Избегайте использования'jet'и'rainbow', которые имеют проблемы с перцептивными искажениями.


Типичные примеры

Пример 1: базовый линейный график и диаграмма рассеяния

Используйте явный интерфейс Axes для создания графиков с несколькими кривыми и аннотациями.

Пример

import matplotlib.pyplot as plt
import numpy as np

# Генерация данных: 100 равноотстоящих точек между 0 и 10
x = np.linspace(0, 10, 100)
y1 = np.sin(x)   # Функция синуса
y2 = np.cos(x)   # Функция косинуса

# Создать Figure и Axes (явный интерфейс, рекомендуется)
fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')

# Построить две линии, задать цвета, стили линий и подписи
ax.plot(x, y1, label='sin(x)', color='blue', linewidth=2)
ax.plot(x, y2, label='cos(x)', color='red', linestyle='--', linewidth=2)

# Добавить выделенные точки рассеяния в позициях пиков
peak_idx_sin = np.argmax(y1)
peak_idx_cos = np.argmax(y2)
ax.scatter(x[peak_idx_sin], y1[peak_idx_sin],
           color='blue', s=100, zorder=5)
ax.scatter(x[peak_idx_cos], y2[peak_idx_cos],
           color='red', s=100, zorder=5)

# Оформление: заголовок, подписи осей, легенда, сетка
ax.set_title('Функции синуса и косинуса', fontsize=14)
ax.set_xlabel('x (радианы)')
ax.set_ylabel('Амплитуда')
ax.legend(loc='upper right')
ax.grid(True, alpha=0.3)

plt.show()
print("пример: график успешно отображён")

Пример 2: макет с несколькими подграфиками (2x2)

Продемонстрировать, как создавать различные типы подграфиков в одной Figure.

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 100)

# Создать сетку подграфиков 2x2 (объектно-ориентированный интерфейс)
fig, axes = plt.subplots(2, 2, figsize=(10, 8), layout='constrained')
fig.suptitle('Многопанельная демонстрация ПРИМЕР', fontsize=16)

# Подграфик (0,0): линейный график
axes[0, 0].plot(x, np.sin(x), color='tab:blue', linewidth=2)
axes[0, 0].set_title('Линейный график')
axes[0, 0].set_ylabel('sin(x)')

# Подграфик (0,1): диаграмма рассеяния
np.random.seed(42)
colors = np.random.rand(50)
sizes = np.random.rand(50) * 200
axes[0, 1].scatter(np.random.rand(50), np.random.rand(50),
                   c=colors, s=sizes, alpha=0.6, cmap='viridis')
axes[0, 1].set_title('Диаграмма рассеяния')

# Подграфик (1,0): столбчатая диаграмма (с подписями значений)
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 32]
bars = axes[1, 0].bar(categories, values,
                       color='tab:green', edgecolor='white')
axes[1, 0].bar_label(bars)  # Отобразить значения на столбцах
axes[1, 0].set_title('Столбчатая диаграмма')

# Подграфик (1,1): гистограмма
data = np.random.randn(1000)
axes[1, 1].hist(data, bins=30, color='tab:orange',
                edgecolor='white', alpha=0.8)
axes[1, 1].axvline(x=0, color='red', linestyle='--', linewidth=2)
axes[1, 1].set_title('Гистограмма')

plt.show()

Пример 3: Сравнение тепловой карты и контурного графика

Демонстрация визуализации двумерных данных на одном Figure с помощью imshow и contourf.

Пример

import matplotlib.pyplot as plt
import numpy as np

# Создать 2D-сетку данных
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)  # значения 2D-функции

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5),
                                layout='constrained')

# Левая панель: тепловая карта (imshow)
im = ax1.imshow(Z, extent=[-3, 3, -3, 3], origin='lower',
                cmap='viridis', aspect='auto')
ax1.set_title('Тепловая карта (imshow)', fontsize=14)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
fig.colorbar(im, ax=ax1, label='Амплитуда', shrink=0.8)

# Правая панель: заполненный контур (contourf)
contour = ax2.contourf(X, Y, Z, levels=15, cmap='RdYlBu')
# Наложение границ контуров
ax2.contour(X, Y, Z, levels=15, colors='black', linewidths=0.5)
ax2.set_title('Заполненный контур (contourf)', fontsize=14)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
fig.colorbar(contour, ax=ax2, label='Амплитуда', shrink=0.8)

plt.show()

Пример 4: Переключение стилей и сохранение графиков

Используйте таблицы стилей и rcParams для настройки внешнего вида и сохранения высококачественных графиков.

Пример

import matplotlib.pyplot as plt
import numpy as np

# Использовать стиль ggplot, затем донастроить некоторые параметры
plt.style.use('ggplot')
plt.rcParams['figure.figsize'] = [8, 6]
plt.rcParams['font.size'] = 12

x = np.linspace(0, 10, 50)
y1 = np.exp(-x/3) * np.sin(2 * x)  # Затухающая синусоида
y2 = np.exp(-x/3) * np.cos(2 * x)  # Затухающая косинусоида

fig, ax = plt.subplots()
ax.plot(x, y1, 'o-', label='Затухающая синусоида', markersize=6)
ax.plot(x, y2, 's--', label='Затухающая косинусоида', markersize=6)

# Аннотировать первый пик
peak_idx = np.argmax(y1)
ax.annotate(f'Пик: {y1[peak_idx]:.2f}',
            xy=(x[peak_idx], y1[peak_idx]),
            xytext=(x[peak_idx] + 1.5, y1[peak_idx] + 0.15),
            arrowprops=dict(arrowstyle='->', color='gray'),
            fontsize=10)

ax.set_title('Затухающие колебания', fontsize=16)
ax.set_xlabel('Время (s)')
ax.set_ylabel('Амплитуда')
ax.legend()
ax.grid(True)

# Сохранить как PNG высокого качества с разрешением 300 DPI
fig.savefig('example_damped_oscillation.png',
            dpi=300, bbox_inches='tight')
print("пример: рисунок успешно сохранён")

plt.show()

Пример 5: Сложная мозаичная компоновка

Используйте subplot_mosaic для создания неравномерных компоновок подграфиков.

Пример

import matplotlib.pyplot as plt
import numpy as np

# Определить компоновку с помощью строки мозаики:
# 'A' занимает всю верхнюю строку, 'B' и 'C' находятся в нижней левой и средней левой части, 'D' занимает нижнюю правую часть по вертикали
layout = """
A A A
B C D
"""


fig, axes = plt.subplot_mosaic(layout, figsize=(10, 6),
                                layout='constrained')
fig.suptitle('Сложный мозаичный макет (ПРИМЕР)', fontsize=16)

# Панель A: линейный график (занимает верхнюю часть)
x = np.linspace(0, 10, 100)
axes['A'].plot(x, np.sin(x), label='sin(x)')
axes['A'].plot(x, np.cos(x), label='cos(x)')
axes['A'].set_title('Панель A: линейный график')
axes['A'].legend()

# Панель B: круговая диаграмма
sizes = [30, 25, 20, 15, 10]
labels = ['Python', 'Java', 'C++', 'Rust', 'Go']
axes['B'].pie(sizes, labels=labels, autopct='%1.1f%%',
              startangle=90)
axes['B'].set_title('Панель B: круговая диаграмма')

# Панель C: столбчатая диаграмма
axes['C'].bar(['X', 'Y', 'Z'], [10, 25, 15],
              color=['#ff6b6b', '#4ecdc4', '#45b7d1'])
axes['C'].set_title('Панель C: столбчатая диаграмма')

# Панель D: тепловая карта
matrix = np.random.rand(5, 5)
im = axes['D'].imshow(matrix, cmap='Blues', aspect='auto')
axes['D'].set_title('Панель D: Тепловая карта')
fig.colorbar(im, ax=axes['D'])

plt.show()

Пример 6: двойные оси Y и встроенные подграфики

Продемонстрировать использование secondary_axis, twinx и inset_axes.

Пример

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(8, 5), layout='constrained')

x = np.linspace(0, 10, 100)

# Основной график: нарисовать две кривые с разными размерностями
ax.plot(x, np.sin(x), 'b-', label='sin(x) [амплитуда]')
ax.set_xlabel('x (радианы)')
ax.set_ylabel('sin(x)', color='blue')
ax.tick_params(axis='y', labelcolor='blue')

# Создать двойные оси Y (общая ось X)
ax2 = ax.twinx()
ax2.plot(x, np.exp(x/5), 'r--', label='exp(x/5) [рост]')
ax2.set_ylabel('exp(x/5)', color='red')
ax2.tick_params(axis='y', labelcolor='red')

# Добавить встроенный подграфик в ax (увеличить локальную область)
axins = ax.inset_axes([0.15, 0.5, 0.3, 0.35])
axins.plot(x, np.sin(x), 'b-')
axins.set_xlim(3, 5)
axins.set_ylim(-1.2, 1.2)
axins.set_title('Увеличенная область')
axins.grid(True, alpha=0.3)

# Отметить область вставки на основном графике
ax.indicate_inset_zoom(axins, edgecolor='gray')

ax.set_title('Двойные оси Y с врезкой увеличения', fontsize=14)
plt.show()

Распространённые проблемы

Графики не отображаются

Убедитесь, что вы вызвалиplt.show()。

В неинтерактивных бэкендах (таких как Agg) её необходимо вызывать явноshow()。

В Jupyter Notebook используйте%matplotlib inlineмагическую команду, чтобы графики отображались inline

Слишком много делений или неправильный порядок

Частая причина — передача списка строк в качестве данных (вместо числовых значений или значений datetime)

Matplotlib рассматривает список строк как категориальные переменные, с одним делением на каждое уникальное значение, расположенные в порядке появления

Решение: преобразуйте строки в числовые значения, напримерnp.asarray(data, dtype='float')илиnp.asarray(data, dtype='datetime64[s]')。

Китайские символы отображаются в виде квадратов

Шрифт Matplotlib по умолчанию (DejaVu Sans) не содержит китайских глифов; необходимо указать шрифт, поддерживающий китайский

Setplt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', ...]И убедитесь, что соответствующий шрифт установлен в системе

Подписи перекрываются или обрезаются

Рекомендуется использовать при создании Figurelayout='constrained'илиlayout='compressed'параметр, который автоматически обрабатывает перекрытие подписей, заголовков и легенд

Вы также можете использоватьfig.tight_layout()илиfig.subplots_adjust()настроить вручную

Разница между pcolor и pcolormesh

pcolor()Создаёт PolyCollection, отрисовка медленнее, но точнее

pcolormesh()Создаёт QuadMesh, отрисовка быстрее, и это рекомендуемый выбор для большинства сценариев

Для очень больших сеток,pcolorfast()использование imshow для построения графика является самым быстрым, но имеет самую низкую точность


Связанные ресурсы

  • Официальный сайт Matplotlib: matplotlib.org
  • Официальная галерея (Gallery): matplotlib.org/stable/gallery/index.html
  • Полный справочник API: matplotlib.org/stable/api/index.html
  • Руководство по установке: matplotlib.org/stable/install/index.html
  • Руководство по участию в разработке: matplotlib.org/stable/devel/index.html
Другие расширения