что значит matplotlib inline
3. Магические команды matplotlib
Я предполагаю, что вы так же как и я, работаете в дистрибутиве Python Anaconda и используете IPython в оболочке Jupyter Notebook. Если это так, то начнем мы с магических команд. Дело в том, что matplotlib может выводить графики на экран разными способами (использовать различные backend-ы). Для начала проверим версию библиотеки и backend, который используется по умолчанию. Создайте новый блокнот и выполните в первой ячейке следующий код:
Если вы работаете в интерактивном режиме Python или IPython, то используемым backendom скорее всего окажется Tk или Qt. Но если мы работаем в Jupyter, то нам нужен backend способный работать с браузером, т.е. основанный на javascript.
Все что вы увидите:
Никакого графика нет. Тем не менее matplotlib создал объект графика и его осталось только отобразить, точнее осталось указать чем именно этот график должен отображаться.
Давайте добавим в начало кода магическую команду:
В результате появится сообщение:
В сообщении говорится, что используется backend Qt, и, действительно появилось новое окошко с графиком:
Как видите, график появился не в отдельном окне, а прямо внутри вашего блокнота, при этом он так же интерактивен.
Если в других ячейках выполнить код, который строит графики, то они появятся в той же области. Выполните следующий код в ячейке ниже и убедитесь в этом:
В таком интерактивном режиме, график моментально реагирует на все изменения в данных, что очень похоже на интерактивный режим самого языка Python. Давайте двинемся дальше и рассмотрим еще одну магическую команду.
Снова немного изменим наш код:
После выполнения данной команды, график будет построен прямо в браузере под ячейкой в которой выполнен код. Команда %matplotlib inline указывает, что график необходимо построить все в той же оболочке Jupyter, но теперь он выводится как обычная картинка. Данный способ удобен тем, что позволяет проводить очень много экспериментов в рамках одного окна (точнее web-страницы). В этом статическом режиме, никакие изменения не отобразятся до тех пор пока не будет выполнена команда plt.show() Именно этой магической командой мы и будем пользоваться в дальнейшем. Но не забывайте, два предыдущих способа вывода графиков могут так же оказаться весьма полезны.
What is matplotlib inline
In this Python tutorial, we will discuss what is matplotlib inline in matplotlib, and we will also cover the following topics:
What is matplotlib inline in python
IPython provides a collection of several predefined functions called magic functions, which can be used and called by command-line style syntax. Basically, there are two types of magic functions, line-oriented and cell-oriented.
Some line magics: %alias, %autowait, %colors, %conda, %config, %debug, %env, %load, %macro, %matplotlib, %notebook, etc.,
Some cell magics: %%bash, %%html, %%javascrit, %%python2, %%ruby, %%sh, %%script, %%perl, etc.,
Now, tet’s talk about the %matplotlib magic function: This function sets up the matplotlib to work interactively. It lets you activate the matplotlib interactive support anywhere in an IPython session (like in jupyter notebook). The syntax to call this function is given below:
In the above syntax:
You can list the available matplotlib backends by:
When you enable the ‘inline’ matplotlib backend, the output of the plotting commands written will be displayed inline within the frontends like jupyter notebook. It means, the plot/graph will be displayed directly below the cell (where the plotting commands are written) and the resulted plot/graph will also be included (stored) in your notebook document.
Why matplotlib inline is used
You can use the magic function %matplotlib inline to enable the inline plotting, where the plots/graphs will be displayed just below the cell where your plotting commands are written.
It provides interactivity with the backend in the frontends like the jupyter notebook. It also provides the feature where, the plotting commands below the output cell of the previous plot, will not affect the previous plot, which means it separates different plots. For example, changing the color palette by colormap in the cell below the previous plot output cell will not change the colormap of that plot.
NOTE – If you are not in the interactive mode and using matplotlib for plotting graphs, then the graph will only appear if you call the matplotlib.pyplot.show() function in previous versions of jupyter notebook.
In the current versions of the IPython notebook and jupyter notebook, it is not necessary to use the %matplotlib inline function. As, whether you call matplotlib.pyplot.show() function or not, the graph output will be displayed in any case.
How to use matplotlib inline
Write %matplotlib inline at the start of the cell before plotting commands in your notebook (jupyter notebook).
Example :
matplotlib inline jupyter
We have discussed the use of the %matplotlib inline function in jupyter in the above topic. It is the same as we discussed there.
So, let’s practice an example to make the concepts more clear.
matplotlib inline in pycharm
Matplotlib plots do not display in Pycharm.
The % notation is for using the magic functions available in python, and %matplotlib inline, represents the magic function %matplotlib, which specifies the backend for matplotlib, and with the argument inline you can display the graph and make the plot interactive.
But %matplotlib inline is only meant for the IPython notebook session, if used in a normal python session (like in pycharm), you will get the syntax error.
You can display your plot in a normal python session for an interactive window by using matplotlib.pyplot.show() function.
matplotlib inline in spyder
As we have discussed in the above topic, the %matplotlib inline does not work within a script and in normal python sessions (like pycharm, spyder, etc.,), works only in the IPython notebook sessions.
There can be two methods through which you can import the feature of the %matplotlib inline function:
Example :
matplotlib inline in vscode
Visual Studio Code also provides a normal python session in which you can not use the %matplotlib inline function.
Example :
Example :
matplotlib inline vs notebook
When you want to add a plot in your IPython notebook (jupyter notebook), then you can use the magic function %matplotlib with different arguments according to the need. Arguments can be inline, notebook, qt, etc., which will open the figure in a window.
%matplotlib inline: You can use this command to display the plots (static plots) in line with the code.
%matplotlib notebook: You can use this command to display the plots in an interactive window, where you can zoom, or resize the figure.
NOTE – New versions of IPython notebook do not support %matplotlib notebook and returns an error: Javascript Error: IPython is not defined.
You can use an alternative for that to display interactive graphs, which we will discuss in another post.
You also like reading our latest articles.
In this Python tutorial, we have discussed the %matplotlib inline in matplotlib, and we have also covered the following topics:
Entrepreneur, Founder, Author, Blogger, Trainer, and more. Check out my profile.
Топ-10 магических команд в Python, которые повысят вашу продуктивность
Python не только самый универсальный язык программирования, но и самый гибкий, когда речь заходит об интеграции новых функций. Магические команды являются одной из таких важных функций, добавленных в стандартную оболочку Python.
Что же такое магические команды Python?
Магические команды — это улучшения, добавляемые поверх обычного кода на Python, их предоставляет ядро IPython.
Эти команды обычно начинаются с символа “%”
Магические команды были преимущественно добавлены для решения распространенных проблем, с которыми сталкиваются пользователи. Также в командной оболочке IPython есть несколько сочетаний горячих клавиш, которые значительно облегчат вам работу.
Существует 2 типа магических команд: строчные, обозначенные одним символом %, и ячеечные, обозначенные двойным символом % %.
Префикс % означает, что команда работает на одной строке кода, в то время как префикс %% позволяет команде работать над всей ячейкой.
Ниже приведен список магических команд и примеры их использования в блокнотах Jupyter.
Выполнение внешнего кода
Любой внешний код Python из блокнота Jupyter можно запускать с помощью команды %run.
Файл myCode.py на изображении выше содержит простой скрипт, который выводит предложение “The world makes sense!».
Если мы введем команду %run, а после нее зададим имя файла, она выполнит код, который содержится в указанном файле.
Примечание: %run также позволяет выполнять код из других блокнотов Jupyter.
Время работы кода
Вы никогда не задумывались, сколько именно времени занимает работа кода в рамках одной ячейки?
Магическая команда time позволяет получить всю необходимую информацию о времени.
Поскольку здесь мы будем иметь дело со всей ячейкой, мы будем использовать %% в качестве префикса перед ключевым словом time.
Ячейка на примере выше включает в себя цикл for со случайным вычислением. %%time помогает узнать время, необходимое для перебора в цикле for.
Копирование содержимого во внешний файл
В большинстве случаев возникает необходимость скопировать содержимое вашей ячейки в скрипт python или текстовый файл непосредственно из вашего блокнота Jupyter.
Вместо того чтобы копировать все и создавать новый файл, вы можете напрямую экспортировать свои данные, добавив команду writefile в ячейку перед кодом.
Обратите внимание на двойной % перед командой, который говорит о том, что будет экспортировано содержимое всей ячейки.
Поскольку у меня уже был создан файл с некоторым кодом, этот код выводит «Overwriting myCode.py» (Перезапись файла). Это говорит о том, что исходное содержимое будет заменено кодом, показанным на изображении выше.
Просмотр содержимого внешнего файла
Часто вам может понадобиться скопировать в свой код несколько строк кода из внешнего файла. Команда %pycat избавит вас от долгой процедуры извлечения определенных данных из файла и их копирования в другой файл. Она позволяет просматривать содержимое любого файла в любом каталоге.
Содержимое внешнего файла отображается в качестве его выходных данных. С точки зрения функционирования этой магической команды получается, что это %writefile, только наоборот.
Держись крепче! Впереди еще много удивительного «волшебства».
Список всех переменных
Эта магическая команда выдает список всех глобальных переменных, используемых в вашем блокноте.
Ниже приведены 3 переменные — 2 строки и 1 целое число. Если мы используем %who, она перечислит все 3 переменные, которые мы задали.
Приведенный выше код отображает все переменные независимо от их типа.
Для того чтобы получить переменные определенного типа, мы должны указать этот тип после магической команды. Приведенный выше код отображает все переменные строкового типа в качестве выходных данных.
Обмен переменными между блокнотами
Эта волшебная команда позволяет вам хранить любую переменную и использовать ее в различных блокнотах Jupyter.
Чтобы извлечь переменную, вам нужно ввести ту же команду с параметром ‘-r’.
Вот так выглядит первый блокнот:
Код, необходимый для извлечения этих данных, записан в другом блокноте.
Это самый простой способ обмена данными любого типа между различными блокнотами.
Выполнение html-скрипта
%% html позволяет нам писать html-код в ячейке. Теперь ячейка будет действовать как html-редактор с html-выводом ячейки.
Следующий код состоит из простой таблицы, созданной в формате html. Заметьте, что html-вывод отображает ожидаемую таблицу.
Совет: вы можете запустить код JavaScript в ячейке с помощью команды % %js magic, аналогичной магической команде HTML.
Отображение графиков Matplotlib
%matplotlib inline — это самая популярная магическая команда. Она позволяет отображать в блокнотах графики Matplotlib. Эта команда активирует интерактивную поддержку Matplotlib для блокнота Jupyter.
Мы импортировали несколько библиотек, чтобы показать, как работает команда.
Теперь создадим два случайных списка для построения графика:
Далее мы построим диаграмму рассеяния данных:
Магическая команда %matplotlib inline позволяет визуализировать график внутри блокнота Jupyter.
Переменные среды
Эта волшебная команда позволяет вам сделать 3 вещи — вывести список всех переменных в среде, получить значение конкретной переменной среды и установить значение переменной.
%env без переменной будет перечислять все переменные среды.
%env с одной переменной вернет значение для указанного параметра.
%env variable value задаст значение для указанного имени переменной.
Подробная информация об объекте
%pinfo предоставляет подробную информацию об объекте, который передается вместе с ним. Она похожа на функцию object?.
В следующем фрагменте я указал простую строку “a” вместе с %pinfo, чтобы получить подробную информацию о ней.
В приведенных выше выходных данных %pinfo предоставляет всю информацию о строке.
Вы можете посмотреть весь список магических команд, используя команду “%lsmagic”.
На мой взгляд это были лучшие 10 магических команд, которые могут улучшить вашу продуктивность и сэкономить время.
Назначение «% matplotlib inline»
%matplotlib это магическая функция в IPython. Я приведу здесь соответствующую документацию, которую вы можете прочитать для удобства:
IPython имеет набор предопределенных «магических функций», которые вы можете вызывать с помощью синтаксиса стиля командной строки. Существует два вида магии: линейная и клеточная. Магические строки начинаются с префикса% и работают так же, как вызовы командной строки ОС: они получают в качестве аргумента остальную часть строки, где аргументы передаются без скобок или кавычек. Магические линии могут возвращать результаты и могут использоваться в правой части задания. Магические ячейки имеют префикс с двойным %%, и они являются функциями, которые получают в качестве аргумента не только остальную часть строки, но и строки под ней в качестве отдельного аргумента.
С помощью этого бэкэнда вывод команд построения графиков отображается в виде линейного интерфейса, как блокнот Jupyter, прямо под ячейкой кода, которая его создала. Полученные графики затем также будут сохранены в документе блокнота.
При использовании встроенного бэкэнда ваши графики matplotlib будут включены в ваш блокнот рядом с кодом. Возможно, стоит почитать, как сделать встроенный сюжет IPython для ноутбука встраиваемым, чтобы узнать, как использовать его в своем коде.
При условии, что вы работаете с IPython, %matplotlib inline ваши выходные данные будут отображаться и сохраняться в блокноте.
Особенно интересным бэкэндом, предоставляемым IPython, является inline бэкэнд. Это доступно только для Jupyter Notebook и Jupyter QtConsole. Это может быть вызвано следующим образом:
С помощью этого бэкэнда вывод команд построения графиков отображается в виде линейного интерфейса, как блокнот 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.
Это просто означает, что любой график, который мы создаем как часть нашего кода, появится в той же записной книжке, а не в отдельном окне, что произошло бы, если бы мы не использовали это волшебное утверждение.
Поэтому, когда вы набираете% matplotlib inline, он активирует встроенный бэкэнд. Как обсуждалось в предыдущих постах:
С помощью этого бэкэнда вывод команд построения графиков отображается в виде линейного интерфейса, как блокнот Jupyter, прямо под ячейкой кода, которая его создала. Полученные графики затем также будут сохранены в документе блокнота.
Чтобы объяснить это ясно:
Если вам не нравится это так:
Добавить %matplotlib inline
и вот он у тебя в тетради на Юпитере.
TL; DR
Ядро IPython имеет возможность отображать графики, выполняя код. Ядро IPython разработано для бесперебойной работы с библиотекой графиков matplotlib для обеспечения этой функциональности.
%matplotlib это волшебная команда, которая выполняет необходимую скрытную настройку для правильной работы IPython matplotlib ; он не выполняет никаких команд импорта Python, то есть имена не добавляются в пространство имен.
Показать вывод в отдельном окне
Вывод на дисплей
(доступно только для Jupyter Notebook и Jupyter QtConsole)
Дисплей с интерактивными бэкэндами
(действительные значения ‘GTK3Agg’, ‘GTK3Cairo’, ‘MacOSX’, ‘nbAgg’, ‘Qt4Agg’, ‘Qt4Cairo’, ‘Qt5Agg’, ‘Qt5Cairo’, ‘TkAgg’, ‘TkCairo’, ‘WebAgg’, ‘WX’, ‘WXAgg’, ‘WXCairo’, ‘agg’, ‘cairo’, ‘pdf’, ‘pgf’, ‘ps’, ‘svg’, ‘template’ )
Подробнее об интерактивных бэкэндах matplotlib: здесь
Matplotlib. Урок 1. Быстрый старт
Первый урок из цикла, посвященному библиотеке для визуализации данных Matplotlib. В рамках данного урока будут рассмотрены такие вопросы как: установка библиотеки, построение линейного графика, несколько графиков на одном и на разных полях, построение диаграммы для категориальных данных и обзор основных элементов графика.
Установка
Варианты установки Matplotlib
Установка Matplotlib через менеджер pip
Второй вариант – это воспользоваться менеджером pip и установить Matplotlib самостоятельно, для этого введите в командной строке вашей операционной системы следующие команды:
Проверка установки
Для проверки того, что все у вас установилось правильно, запустите интерпретатор Python и введите в нем следующее:
После этого можете проверить версию библиотеки (она скорее всего будет отличаться от приведенной ниже):
Быстрый старт
Если вы работаете в Jupyter Notebook для того, чтобы получать графики рядом с ячейками с кодом необходимо выполнить специальную magic команду после того, как импортируете matplotlib ::
Результат работы выглядеть будет так, как показано на рисунке ниже.
Пример, аналогичный тому, что представлен на рисунке выше, для отдельного Python файла будет выглядеть так:
В результате получите график в отдельном окне.
Далее мы не будем останавливаться на особенностях использования magic команды, просто запомните, если вы используете Jupyter notebook при работе с Matplotlib вам обязательно нужно включить %matplotlib inline.
Построение графика
Для начал построим простую линейную зависимость, дадим нашему графику название, подпишем оси и отобразим сетку. Код программы:
В результате получим следующий график:
Несколько графиков на одном поле
Построим несколько графиков на одном поле, для этого добавим квадратичную зависимость:
В приведенном примере в функцию plot() последовательно передаются два массива для построения первого графика и два массива для построения второго, при этом, как вы можете заметить, для обоих графиков массив значений независимой переменной x один и то же.
Несколько разделенных полей с графиками
Третья, довольно часто встречающаяся задача – это отобразить два или более различных поля, на которых будет отображено по одному или более графику.
Построим уже известные нам две зависимость на разных полях.
Здесь мы воспользовались новыми функциями:
figure() – функция для задания глобальных параметров отображения графиков. В нее, в качестве аргумента, мы передаем кортеж, определяющий размер общего поля.
subplot() – функция для задания местоположения поля с графиком. Существует несколько способов задания областей для вывода через функцию subplot() мы воспользовались следующим: первый аргумент – количество строк, второй – столбцов в формируемом поле, третий – индекс (номер поля, считаем сверху вниз, слева направо).
Построение диаграммы для категориальных данных
До этого мы строили графики по численным данным, т.е. зависимая и независимая переменные имели числовой тип. На практике довольно часто приходится работать с данными нечисловой природы – имена людей, название фруктов, и т.п.
Построим диаграмму на которой будет отображаться количество фруктов в магазине:
К этому моменту, если вы самостоятельно попробовали запустить приведенные выше примеры, у вас уже должно сформировать некоторое понимание того, как осуществляется работа с этой библиотекой.
Основные элементы графика
Корневым элементом при построения графиков в системе Matplotlib является Фигура ( Figure ). Все, что нарисовано на рисунке выше является элементами фигуры. Рассмотрим ее составляющие более подробно.
На рисунке представлены два графика – линейный и точечный. Matplotlib предоставляет огромное количество различных настроек, которые можно использовать для того, чтобы придать графику вид, который вам нужен: цвет, толщина и тип линии, стиль линии и многое другое, все это мы рассмотрим в ближайших статьях.
Вторым, после непосредственно самого графика, по важности элементом фигуры являются оси. Для каждой оси можно задать метку (подпись), основные ( major ) и дополнительные ( minor ) тики, их подписи, размер и толщину, также можно задать диапазоны по каждой из осей.
Следующими элементами фигуры, которые значительно повышают информативность графика являются сетка и легенда. Сетка также может быть основной ( major ) и дополнительной ( minor ). Каждому типу сетки можно задавать цвет, толщину линии и тип. Для отображения сетки и легенды используются соответствующие команды.
Ниже представлен код, с помощью которого была построена фигура, изображенная на рисунке:
Если в данный момент вам многое кажется непонятным – не переживайте, далее мы разберем подробно особенности настройки и использования всех элементов представленных на поле с графиками.