Функции 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 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 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 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 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 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 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