Справочная документация 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.
| Функция | Связанные материалы |
|---|---|
| Функция plot() в Matplotlib | plot() |
| Функция scatter() в Matplotlib | scatter() |
| Функция bar() / barh() в Matplotlib | bar(), barh(), bar_label(), grouped_bar() |
| Функция hist() в Matplotlib | hist() |
| Функция Matplotlib pie() | pie(), pie_label() |
| Функция Matplotlib imshow() | imshow() |
| Функция Matplotlib subplots() | subplots() |
| Функция Matplotlib figure() | figure() |
| Функция Matplotlib savefig() | savefig() |
| Функция Matplotlib errorbar() | errorbar() |
| Функция boxplot() в Matplotlib | boxplot() |
| Функция contour() / contourf() в Matplotlib | contour(), contourf(), clabel() |
| Функция fill_between() / fill_betweenx() в Matplotlib | fill_between(), fill_betweenx() |
| Функция legend() в Matplotlib | legend() |
| Функция text() / annotate() в Matplotlib | text(), annotate() |
| Функции заголовка и меток в Matplotlib | title(), xlabel(), ylabel(), suptitle(), supxlabel(), supylabel() |
| Функция colorbar() в Matplotlib | colorbar() |
| Функции управления фигурами и осями Matplotlib | axes(), cla(), clf(), close(), delaxes(), fignum_exists(), gca(), gcf(), get_figlabels(), get_fignums(), sca(), subplot(), subplot2grid(), subplot_mosaic(), twinx(), twiny() |
| Расширенные функции построения графиков Matplotlib | step(), stem(), eventplot(), stackplot(), broken_barh(), vlines(), hlines(), fill(), loglog(), semilogx(), semilogy() |
| Функции диапазонов и векторных полей Matplotlib | axhline(), axhspan(), axvline(), axvspan(), axline(), quiver(), quiverkey(), barbs(), streamplot() |
| Функции спектрального анализа Matplotlib | acorr(), xcorr(), psd(), csd(), specgram(), cohere(), angle_spectrum(), magnitude_spectrum(), phase_spectrum() |
| Функции построения 2D-данных и статистических графиков Matplotlib | hist2d(), hexbin(), stairs(), matshow(), pcolor(), pcolormesh(), spy(), figimage(), ecdf(), violinplot() |
| Функции триангуляции и полярных координат Matplotlib | triplot(), tripcolor(), tricontour(), tricontourf(), polar(), rgrids(), thetagrids() |
| Функции настройки осей Matplotlib | xlim(), ylim(), xscale(), yscale(), xticks(), yticks(), tick_params(), ticklabel_format(), locator_params(), minorticks_on(), minorticks_off(), grid(), axis(), box(), autoscale() |
| Функции компоновки и настройки Matplotlib | subplots_adjust(), tight_layout(), margins(), subplot_tool(), rc(), rc_context(), rcdefaults(), clim(), get_cmap(), set_cmap(), gci(), sci(), imread(), imsave(), draw(), ion(), ioff(), pause(), switch_backend(), show(), isinteractive(), install_repl_displayhook(), uninstall_repl_displayhook(), draw_if_interactive() |
| Служебные функции и функции взаимодействия Matplotlib | connect(), disconnect(), ginput(), waitforbuttonpress(), findobj(), get(), setp(), getp(), get_current_fig_manager(), new_figure_manager(), set_loglevel(), xkcd() |
| Функции текста и аннотаций уровня фигуры Matplotlib | figtext(), figlegend(), table(), arrow() |
Модуль pyplot - полный список функций
pyplot — это интерфейс верхнего уровня Matplotlib, предоставляющий возможности построения графиков, подобные MATLAB. Ниже приведены все функции в соответствии с официальной категоризацией.
1. Управление фигурами и осями
Функции для создания и управления Figure (холст) и Axes (системы координат/подграфики).
| Функция | Описание |
|---|---|
| figure() | Создать новую Figure или активировать существующую Figure |
| subplots() | РекомендуетсяСоздать Figure и набор подграфиков Axes |
| subplot() | Добавить один подграфик в текущую Figure (по индексу строки и столбца) |
| subplot2grid() | Создать подграфик в указанной позиции в сеточном макете |
| 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() | Построить диаграмму рассеяния с поддержкой отображения размера/цвета/alpha |
| 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. Диапазоны
Нарисуйте горизонтальные и вертикальные опорные линии и заштрихованные области.
| Функция | Описание |
|---|---|
| axhline() | Добавить горизонтальную линию, охватывающую всю область Axes |
| axhspan() | Добавить горизонтальную заштрихованную полосу, охватывающую всю область Axes |
| axvline() | Добавить вертикальную линию, проходящую через всю область Axes |
| axvspan() | Добавить вертикальную затенённую полосу, охватывающую всю область Axes |
| axline() | Добавить бесконечную линию, проходящую через две точки |
4. Спектральный анализ
Функции для обработки сигналов и спектральной визуализации.
| Функция | Описание |
|---|---|
| acorr() | Построить график автокорреляции |
| xcorr() | Построить график кросс-корреляции |
| angle_spectrum() | Построить угловой спектр |
| magnitude_spectrum() | Построить амплитудный спектр |
| phase_spectrum() | Построить фазовый спектр |
| psd() | Построить спектральную плотность мощности |
| csd() | Построить взаимную спектральную плотность |
| cohere() | Построить когерентность |
| specgram() | Построить спектрограмму (частотно-временной график) |
5. Статистические графики
Построить графики, связанные со статистическими распределениями.
| Функция | Описание |
|---|---|
| boxplot() | Построить ящичную диаграмму |
| violinplot() | Построить скрипичную диаграмму |
| ecdf() | Построить эмпирическую функцию распределения (ECDF) |
6. Биннинг и гистограммы
| Функция | Описание |
|---|---|
| hist() | Построить одномерную гистограмму |
| hist2d() | Построить двумерную гистограмму |
| hexbin() | Построить график hexbin |
| stairs() | Построить ступенчатую гистограмму (новая версия, заменяет режим step функции 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 plot) |
| 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() | Включить или выключить границы Axes |
| 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() | Сохранить текущую фигуру в файл |
| draw() | Принудительно перерисовать текущую фигуру |
| 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() | Гексагональная диаграмма |
| 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() | Векторное поле (диаграмма 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() | Пересчитать пределы данных на основе текущего Artist |
| 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. Запрос дочерних Artist
| Метод | Описание |
|---|---|
| Axes.get_children() | Получить все дочерние Artist |
| Axes.get_images() | Получить все объекты изображений |
| Axes.get_lines() | Получить все объекты линий |
| Axes.findobj() | Найти дочерние объекты Artist, удовлетворяющие условиям |
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 | Словарь границ (свойство) |
Объект Figure — полный список методов
Figure — это контейнер верхнего уровня всего графика, управляющий всеми Axes, Artists и компоновкой.
1. Добавление Axes и SubFigures
| Метод | Описание |
|---|---|
| Figure.subplots() | РекомендуетсяСоздать сетку подграфиков Axes |
| Figure.add_subplot() | Добавить один подграфик по позиции строки и столбца |
| Figure.add_axes() | Добавить Axes в указанной позиции и размере |
| Figure.subplot_mosaic() | Создать сложные компоновки подграфиков с использованием макета меток |
| Figure.add_gridspec() | Добавить объект макета GridSpec |
| Figure.subfigures() | Создать вложенную подфигуру |
| 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.
Добавление Axes
| Методы | Описание |
|---|---|
| SubFigure.subplots() | Создать сетку подграфиков |
| 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 |
| 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() | Получить дочерний Artist |
| 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 |
| seaborn-v0_8-darkgrid | тёмный с сеткой seaborn |
| seaborn-v0_8-deep | глубокие тона seaborn |
| seaborn-v0_8-muted | приглушённые тона seaborn |
| seaborn-v0_8-notebook | стиль seaborn notebook |
| seaborn-v0_8-paper | стиль seaborn paper |
| seaborn-v0_8-pastel | пастельные тона seaborn |
| seaborn-v0_8-poster | стиль seaborn poster |
| seaborn-v0_8-talk | стиль seaborn talk |
| seaborn-v0_8-ticks | стиль seaborn ticks |
| seaborn-v0_8-white | белый фон seaborn |
| seaborn-v0_8-whitegrid | seaborn white with grid |
| fivethirtyeight | Имитирует стиль журналистики данных FiveThirtyEight |
| dark_background | Темный фон, подходит для презентаций и использования ночью |
| bmh | Стиль Bayesian Methods for Hackers |
| grayscale | Стиль в градациях серого, подходит для черно-белой печати |
| classic | Классический стиль Matplotlib v1.x |
| fast | Упрощенный стиль, более быстрый рендеринг |
| Solarize_Light2 | Светлая тема Solarized |
| tableau-colorblind10 | Палитра Tableau, удобная для дальтоников |
Общая конфигурация rcParams
| Параметр | Описание | Пример значения |
|---|---|---|
| figure.figsize | Размер фигуры по умолчанию (в дюймах) | [8, 6] |
| figure.dpi | Разрешение по умолчанию | 100 |
| figure.facecolor | Цвет фона фигуры | 'white' |
| figure.edgecolor | Цвет границы рисунка | '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 | 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)
Демонстрирует, как создавать различные типы подграфиков в одной фигуре.
Пример
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: тепловая карта против контурного графика
Демонстрирует визуализацию 2D-данных в одной и той же фигуре с использованием как 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Магическая команда обеспечивает встроенное отображение графиков.
Слишком много делений или неверный порядок делений
Распространённая причина — передача списка строк в качестве данных (а не числовых значений или значений 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
- Официальная галерея: 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