Matplotlib inline что это
Перейти к содержимому

Matplotlib inline что это

  • автор:

Как использовать «%matplotlib inline» (с примерами)

Как использовать «%matplotlib inline» (с примерами)

Вы можете использовать следующий код для отображения и хранения графиков Matplotlib в блокноте Python Jupyter:

% matplotlib inline 

Вот как этот код описан на странице документации :

«Благодаря этому бэкэнду вывод команд построения графика отображается во внешних интерфейсах, таких как блокнот Jupyter , непосредственно под ячейкой кода, которая его создала. Полученные графики также будут сохранены в документе записной книжки».

В следующем примере показано, как использовать этот код на практике.

Пример: как использовать встроенный %matplotlibe

Предположим, мы пытаемся использовать следующий код для создания линейного графика Matplotlib в блокноте Jupyter:

import matplotlib.pyplot as plt #define x and y x = [1, 6, 10] y = [5, 13, 27] #attempt to create line plot of x and y plt.plot (x, y) 

Вот как выглядит вывод в блокноте Jupyter:

Код выполняется без ошибок, но линейный график не отображается вместе с кодом.

Чтобы исправить это, мы можем использовать встроенную команду %matplotlib перед созданием линейного графика:

% matplotlib inline import matplotlib.pyplot as plt #define x and y x = [1, 6, 10] y = [5, 13, 27] #create scatter plot of x and y plt.plot (x, y) 

Вот как выглядит вывод в блокноте Jupyter:

Обратите внимание, что код снова выполняется без ошибок, а график отображается в записной книжке.

Обратите внимание, что после того, как мы использовали %matplotlib inline , любые графики Matplotlib, которые мы создаем в любых будущих ячейках блокнота, также будут отображаться и храниться в блокноте.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:

Использование %matplotlib inline в Python

Comparison of graph display in Jupyter notebooks with and without %matplotlib inline command.

В процессе изучения Python и библиотеки Matplotlib, которая используется для визуализации данных, часто встречается команда %matplotlib inline . Она может вызывать недоумение, поскольку выглядит иначе, по сравнению с большинством команд Python. Например, в следующем блоке кода:

import matplotlib.pyplot as plt import numpy as np %matplotlib inline x = np.linspace(0, 10, 100) plt.plot(x, np.sin(x)) plt.plot(x, np.cos(x)) plt.show()

Здесь команда %matplotlib inline может показаться загадочной. Что это и для чего она нужна?

Что такое %matplotlib inline?

%matplotlib inline — это команда, специфичная для IPython (или Jupyter notebook), которая позволяет вам встроить графики прямо внутрь ноутбука, а не в новом окне.

Зачем она нужна?

Когда вы работаете с Matplotlib в интерактивных режимах, таких как Jupyter notebook или IPython, графики, которые вы создаете, отображаются в отдельном окне. Это может быть неудобно, особенно если вы хотите сохранить свою работу в виде ноутбука с результирующими графиками.

Команда %matplotlib inline решает эту проблему, позволяя вам встроить графики прямо в ноутбук. Это удобно, поскольку позволяет сохранить все в одном месте, а также делиться своими ноутбуками с другими.

Как это работает?

%matplotlib inline является примером использования так называемых «магических» функций в IPython. «Магические» функции — это набор команд, предоставляемых IPython, которые имеют синтаксис, отличающийся от обычного синтаксиса Python. Эти функции начинаются с символа % или %% и предназначены для выполнения определенных операций.

В случае с %matplotlib inline , когда математическая библиотека выполняет команду для создания графика, «магическая» функция перехватывает вывод и встраивает его в ноутбук.

Вывод

Команда %matplotlib inline — это удобный инструмент для работы с графиками в интерактивном режиме Python. Она позволяет встроить графики прямо в ноутбук, что упрощает сохранение и обмен результатами работы.

Вывод графиков matplotlib в IPython Notebook

Difficulty displaying matplotlib graphs in IPython Notebook.

Иногда при работе с библиотекой matplotlib в среде IPython Notebook возникает ситуация, когда графики, построенные с помощью этой библиотеки, не отображаются в блокноте. Вместо этого отображается строка подобного вида:

Это является типичной проблемой, с которой могут столкнуться начинающие пользователи при использовании библиотеки matplotlib в IPython Notebook.

Например, имеется следующий код:

import matplotlib import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp') plt.show()

Ожидается, что после выполнения этого кода на экране появится график функции. Однако, вместо графика появляется строка .

Для решения этой проблемы необходимо использовать магическую команду %matplotlib inline . Эта команда позволяет выводить графики matplotlib прямо в блокноте, а не в отдельном окне.

Таким образом, код будет выглядеть следующим образом:

import matplotlib import numpy as np import matplotlib.pyplot as plt %matplotlib inline x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp') plt.show()

Теперь после выполнения этого кода график будет отображаться прямо в блокноте IPython.

Бывают случаи, когда даже после использования команды %matplotlib inline , графики все равно не отображаются. В этом случае стоит проверить, какой backend используется для отрисовки графиков. Это можно сделать с помощью функции matplotlib.get_backend() . Если в качестве backend используется ‘module://IPython.kernel.zmq.pylab.backend_inline’ , то графики должны отображаться нормально. Если же используется другой backend, то его стоит сменить на ‘module://IPython.kernel.zmq.pylab.backend_inline’ с помощью функции matplotlib.use() .

Назначение «%matplotlib inline»

%matplotlib — это волшебная функция в IPython. Я процитирую здесь соответствующую документацию, чтобы вы могли прочитать ее для удобства:

В IPython есть набор предопределенных ‘волшебных функций’, которые вы можете вызвать с помощью синтаксиса стиля командной строки. Существует два вида волшебств, ориентированных на строки и ячейки. Волшебства строк префиксированы символом % и работают так же, как вызовы командной строки ОС: они получают в качестве аргумента остальную часть строки, где аргументы передаются без скобок или кавычек. Волшебства строк могут возвращать результаты и могут использоваться в правой части присваивания. Волшебства ячеек префиксированы двойным %%, и они являются функциями, которые получают в качестве аргумента не только остальную строку, но и строки ниже в отдельном аргументе.

С этим бэкэндом вывод команд графического отображения отображается встроенно внутри фронтенда, например, Jupyter notebook, непосредственно под ячейкой кода, которая его создала. Полученные графики также будут сохранены в документе блокнота.

При использовании ‘inline’ бэкэнда, ваши графики matplotlib будут включены в ваш блокнот, рядом с кодом. Возможно, стоит также прочитать Как сделать график matplotlib IPython notebook встроенным для справки о том, как использовать его в вашем коде.

Если вы также хотите интерактивности, вы можете использовать nbagg backend с %matplotlib notebook (в IPython 3.x), как описано здесь .

Поделиться 26 марта 2017 в 11:19

Чтобы объяснить это ясно:

Если вам не нравится это так:

enter image description here

добавьте %matplotlib inline

enter image description here

и там у вас есть это в вашем блокноте jupyter.

Поделиться 18 апреля 2020 в 12:28

При условии, что вы используете IPython, %matplotlib inline сделает ваши выходы графика отображаться и храниться внутри блокнота.

Чтобы настроить это, перед выполнением любого графического или импортного запроса matplotlib необходимо выполнить магическую команду %matplotlib . Это выполняет необходимую настройку за кулисами для правильной работы IPython рука об руку с matplotlib ; однако, на самом деле не выполняет никаких команд импорта Python, то есть имена не добавляются в пространство имен.

Особенно интересным бэкэндом, предоставленным IPython, является inline . Это доступно только для Jupyter Notebook и Jupyter QtConsole. Его можно вызвать следующим образом:

%matplotlib inline 

С этим бэкэндом вывод команд графического запроса отображается встроенно внутри фронтендов, таких как Jupyter notebook, непосредственно под ячейкой кода, которая его создала. Результирующие графики также будут сохранены в документе блокнота.

Поделиться 26 марта 2017 в 11:25

Если вы хотите добавить графики в свой Jupyter notebook, то %matplotlib inline — это стандартное решение. И есть другие магические команды, которые будут использовать matplotlib интерактивно в Jupyter.

%matplotlib : любая команда plt в графике теперь вызовет открытие окна фигуры, и можно запустить дополнительные команды для обновления графика. Некоторые изменения не будут выводиться автоматически, чтобы принудительно обновить, используйте plt.draw()

%matplotlib notebook : приведет к интерактивным графикам, встроенным в блокнот, вы можете увеличить и изменить размер фигуры

%matplotlib inline : только рисовать статические изображения в блокноте

Поделиться 20 марта 2019 в 17:24

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

Поделиться 06 января 2020 в 12:46

TL;DR

%matplotlib inline — Отображает вывод встроенно

Ядро IPython имеет возможность отображать графики путем выполнения кода. Ядро IPython предназначено для плавной работы с библиотекой графики matplotlib, чтобы предоставить эту функциональность.

%matplotlib — это волшебная команда, которая выполняет необходимую настройку за кулисами для правильной работы IPython вручную с matplotlib ; она не выполняет никаких команд импорта Python, то есть имена не добавляются в пространство имен.

Отображение вывода в отдельном окне

%matplotlib 

Отображение вывода встроенно

(доступно только для Jupyter Notebook и Jupyter QtConsole)

%matplotlib inline 

Отображение с интерактивными бэкэндами

(допустимые значения ‘GTK3Agg’, ‘GTK3Cairo’, ‘MacOSX’, ‘nbAgg’, ‘Qt4Agg’, ‘Qt4Cairo’, ‘Qt5Agg’, ‘Qt5Cairo’, ‘TkAgg’, ‘TkCairo’, ‘WebAgg’, ‘WX’, ‘WXAgg’, ‘WXCairo’, ‘agg’, ‘cairo’, ‘pdf’, ‘pgf’, ‘ps’,’svg’, ‘template’ )

%matplotlib gtk 

Пример — GTK3Agg — Рендеринг Agg на холст GTK 3.x (требуется PyGObject и pycairo или cairocffi).

Более подробно об интерактивных бэкэндах matplotlib: здесь

Начиная с IPython 5.0 и matplotlib 2.0 , вы можете избежать использования специфической магии IPython и использовать matplotlib.pyplot.ion() / matplotlib.pyplot.ioff() , которые также имеют преимущества работы вне IPython.

Поделиться 25 марта 2020 в 20:27

Начиная с IPython 5.0 и matplotlib 2.0, вы можете избежать использования специфической магии IPython и использовать matplotlib.pyplot.ion()/matplotlib.pyplot.ioff() , которые также имеют преимущества работы вне IPython.

Поделиться 21 октября 2019 в 06:44

Если вы не знаете, что такое бэкэнд, вы можете прочитать это: https://matplotlib.org/stable/users/explain/backends.html

Некоторые люди используют matplotlib интерактивно из оболочки python и имеют окна графического отображения, которые появляются при вводе команд. Некоторые люди запускают блокноты Jupyter и рисуют встроенные графики для быстрого анализа данных. Другие встраивают matplotlib в графические пользовательские интерфейсы, такие как wxpython или pygtk, чтобы построить богатые приложения. Некоторые люди используют matplotlib в пакетных скриптах для генерации изображений после скрипта из числовых симуляций, а другие запускают серверы веб-приложений для динамического обслуживания графиков. Чтобы поддерживать все эти случаи использования, matplotlib может нацеливаться на различные выходы, и каждая из этих возможностей называется бэкэндом; «фронтенд» — это код, с которым сталкивается пользователь, то есть код графического отображения, в то время как «бэкэнд» выполняет всю тяжелую работу за кулисами, чтобы сделать график.

Таким образом, когда вы вводите %matplotlib inline, он активирует inline backend. Как обсуждалось в предыдущих публикациях:

С этим backend, вывод команд графического отображения отображается inline внутри frontends, например, Jupyter notebook, непосредственно под ячейкой кода, которая его создала. Полученные графики также будут сохранены в документе notebook.

Поделиться 19 сентября 2019 в 14:25

При условии, что вы запускаете Jupyter Notebook, встроенная команда %matplotlib позволит отобразить вывод графика в блокноте, который также может быть сохранен.

Поделиться 14 апреля 2020 в 01:27

Я думаю, что с последними версиями Jupyter/matplotlib фигуры отображаются «встроенно», без необходимости использовать %matplotlib inline .

Таким образом, можно подумать, что эта команда теперь бесполезна. но, на мой взгляд, она создает «менеджер», который настраивает параметры отображения. Matplotlib ищет существующий менеджер при создании фигуры и создает его при необходимости. Внутри matplotlib.pyplot.figure :

 manager = _pylab_helpers.Gcf.get_fig_manager(num) if manager is None: # not relevant stuff… manager = new_figure_manager( num, figsize=figsize, dpi=dpi, facecolor=facecolor, edgecolor=edgecolor, frameon=frameon, FigureClass=FigureClass, **kwargs) 

Теперь установка параметра отображения ( rcParams ) не создаст «менеджер» самостоятельно. Поэтому при отображении фигуры в первый раз, будет создан новый менеджер и будут перезаписаны ваши параметры.

Закомментируйте/откомментируйте %matplotlib inline и посмотрите, что произойдет. (Не забудьте перезапускать ядро между каждой попыткой!)

import matplotlib.pyplot as plt from matplotlib.image import imread # %matplotlib inline plt.rcParams["figure.dpi"] = 200 plt.imshow(imread("path_to_your_image")) print(plt.rcParams["figure.dpi"]) 

Поделиться 07 сентября 2022 в 09:58

В версиях Jupyter Notebook раньше 5.0 команда %matplotlib inline гарантирует, что графики Matplotlib отображаются встроенно внутри блокнота, непосредственно под ячейкой кода, которая его создала. Однако вам не нужно вызывать plt.show(), чтобы отображать графики при использовании %matplotlib inline1. После включения команды %matplotlib inline в ваш код, любые созданные вами графики Matplotlib автоматически отображаются встроенно внутри блокнота, без необходимости вызывать plt.show().

Плани отображаются в отдельных всплывающих окнах по умолчанию, когда мы вызываем plt.show(), не используя %matplotlib inline в версиях Jupyter Notebook раньше 5.0.

В Jupyter Notebook >= 5.0, —> В версиях Jupyter Notebook 5.0 и выше графики автоматически отображаются встроенно (не нужно писать %matplotlib inline). Использование plt.show() или не является необязательным для отображения графиков.

Поделиться 17 августа 2023 в 09:57

Это не обязательно писать. Для меня это работало отлично без магической функции ( %matplotlib ). Я использую компилятор Sypder, который поставляется в Anaconda.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *