Может ли кто-нибудь объяснить мне, в чем именно польза %matplotlib inline
?
Может ли кто-нибудь объяснить мне, в чем именно польза %matplotlib inline
?
Ответы:
%matplotlib
это магическая функция в IPython. Я приведу здесь соответствующую документацию, которую вы можете прочитать для удобства:
IPython имеет набор предопределенных «магических функций», которые вы можете вызывать с помощью синтаксиса стиля командной строки. Существует два вида магии: линейная и клеточная. Магические строки начинаются с префикса% и работают так же, как вызовы командной строки ОС: они получают в качестве аргумента остальную часть строки, где аргументы передаются без скобок или кавычек. Магические линии могут возвращать результаты и могут использоваться в правой части задания. Магические ячейки имеют префикс с двойным %%, и они являются функциями, которые получают в качестве аргумента не только остальную часть строки, но и строки под ней в качестве отдельного аргумента.
%matplotlib inline
устанавливает backend для matplotlib в 'встроенный' backend :
С помощью этого бэкэнда вывод команд построения графиков отображается в виде линейного интерфейса, как блокнот Jupyter, прямо под ячейкой кода, которая его создала. Полученные графики затем также будут сохранены в документе блокнота.
При использовании встроенного бэкэнда ваши графики matplotlib будут включены в ваш блокнот рядом с кодом. Возможно, стоит почитать, как сделать встроенный сюжет IPython для ноутбука встраиваемым, чтобы узнать, как использовать его в своем коде.
Если вам нужна интерактивность, вы можете использовать бэкэнд nbagg с %matplotlib notebook
(в IPython 3.x), как описано здесь .
При условии, что вы работаете с IPython, %matplotlib inline
ваши выходные данные будут отображаться и сохраняться в блокноте.
Согласно документации
Чтобы установить это, перед выполнением любого построения или импорта
matplotlib
необходимо выполнить%matplotlib magic command
. Это обеспечивает необходимую скрытную настройку IPython для правильной работы рука об рукуmatplotlib
; однако он фактически не выполняет никаких команд импорта Python, то есть имена не добавляются в пространство имен.Особенно интересным бэкэндом, предоставляемым IPython, является
inline
бэкэнд. Это доступно только для Jupyter Notebook и Jupyter QtConsole. Это может быть вызвано следующим образом:%matplotlib inline
С помощью этого бэкэнда вывод команд построения графиков отображается в виде линейного интерфейса, как блокнот Jupyter, прямо под ячейкой кода, которая его создала. Полученные графики затем также будут сохранены в документе блокнота.
Если вы хотите добавить графики в свой блокнот Jupyter, то %matplotlib inline
это стандартное решение. Есть и другие магические команды, которые будут matplotlib
интерактивно использоваться в Jupyter.
%matplotlib
: любая plt
команда заговора теперь вызовет открытие окна рисунка, и можно будет запустить дополнительные команды для обновления заговора. Некоторые изменения не будут отображаться автоматически, для принудительного обновления используйтеplt.draw()
%matplotlib notebook
: приведет к интерактивным графикам, встроенным в ноутбук, вы можете увеличивать и изменять размеры фигуры
%matplotlib inline
: рисовать только статичные изображения в блокноте
Начиная с IPython 5.0 и matplotlib 2.0, вы можете избежать использования особой магии и использования IPython,
matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()
которые также имеют преимущества работы вне IPython.
inline
, графики создаются во внешних окнах, и вам нужно использовать display (), чтобы отобразить их в блокноте.
Это просто означает, что любой график, который мы создаем как часть нашего кода, появится в той же записной книжке, а не в отдельном окне, что произошло бы, если бы мы не использовали это волшебное утверждение.
Если вы не знаете, что такое бэкэнд, вы можете прочитать это: https://matplotlib.org/tutorials/introductory/usage.html#backends
Некоторые люди используют matplotlib в интерактивном режиме из оболочки python, и при вводе команд всплывающие окна появляются. Некоторые люди используют записные книжки Jupyter и рисуют линейные графики для быстрого анализа данных. Другие встраивают matplotlib в графические пользовательские интерфейсы, такие как wxpython или pygtk, для создания многофункциональных приложений. Некоторые люди используют matplotlib в пакетных сценариях для генерации изображений PostScript из численного моделирования, а третьи используют серверы веб-приложений для динамического отображения графиков. Для поддержки всех этих вариантов использования matplotlib может предназначаться для различных выходных данных, и каждая из этих возможностей называется бэкэндом; «внешний интерфейс» - это код пользователя, то есть код построения, а «внутренний» выполняет всю тяжелую работу за кулисами, чтобы создать фигуру.
Поэтому, когда вы набираете% matplotlib inline, он активирует встроенный бэкэнд. Как обсуждалось в предыдущих постах:
С помощью этого бэкэнда вывод команд построения графиков отображается в виде линейного интерфейса, как блокнот Jupyter, прямо под ячейкой кода, которая его создала. Полученные графики затем также будут сохранены в документе блокнота.
TL; DR
%matplotlib inline
- Отображает вывод в строкеЯдро IPython имеет возможность отображать графики, выполняя код. Ядро IPython разработано для бесперебойной работы с библиотекой графиков matplotlib для обеспечения этой функциональности.
%matplotlib
это волшебная команда, которая выполняет необходимую скрытную настройку для правильной работы IPythonmatplotlib
; он не выполняет никаких команд импорта 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.
При условии, что вы используете Jupyter Notebook, встроенная команда% matplotlib сделает вывод ваших графиков отображаемым в блокноте, а также может быть сохранен.
Это не обязательно писать это. Это работало нормально для меня без ( %matplotlib
) магической функции. Я использую компилятор Sypder, который поставляется с Anaconda.