Невже хтось може мені пояснити, в чому саме полягає користь %matplotlib inline
?
Невже хтось може мені пояснити, в чому саме полягає користь %matplotlib inline
?
Відповіді:
%matplotlib
є магічною функцією в IPython. Я процитую тут відповідну документацію, яку ви прочитаєте для зручності:
IPython має набір попередньо визначених "магічних функцій", які можна викликати за допомогою синтаксису стилю командного рядка. Існує два види магії, орієнтовані на лінії та клітини. Лінія магії має префікс символу% і працює так само, як виклики командного рядка ОС: вони отримують як аргумент решту рядка, де аргументи передаються без дужок чи лапок. Лінії магії можуть повернути результати і їх можна використовувати в правій частині завдання. Магія комірок має префікс з подвійним %%, і вони є функціями, які отримують в якості аргументу не тільки решту рядка, але і рядки під ним в окремий аргумент.
%matplotlib inline
встановлює вихідний модуль matplotlib на "вбудований" бекенд :
У цьому бекенді вихід команд для побудови графіків відображається в рядку в межах фронту, як ноутбук Юпітера, безпосередньо під кодом коду, який його створив. Отримані сюжети потім також будуть зберігатися в документі зошита.
Під час використання "вбудованого" бекенда ваші графіки matplotlib будуть включені у ваш ноутбук поруч із кодом. Можливо, варто також прочитати, як зробити сюжет matplotlib для ноутбука IPython для вказівки про те, як його використовувати у своєму коді.
Якщо ви також хочете інтерактивність, ви можете використовувати бекенд nbagg з %matplotlib notebook
(у IPython 3.x), як описано тут .
За умови, що ви працюєте з IPython, %matplotlib inline
ваші виведення сюжету відображатимуться та зберігатимуться у зошиті.
Відповідно до документації
Щоб налаштувати це, перед тим, як
matplotlib
виконати будь-який графік чи імпорт, потрібно виконати%matplotlib magic command
. Це виконує необхідні за кадром настройки для IPython, щоб правильно працювати рука об рукуmatplotlib
; однак, він фактично не виконує жодних команд імпорту Python, тобто ніякі імена не додаються до простору імен.Особливо цікавим бекендом, який надає IPython, є
inline
бекенд. Це доступно лише для ноутбука Юпітер та QtConsole Jupyter. На нього можна звернутися так:%matplotlib inline
У цьому бекенді вихід команд для побудови графіків відображається в рядку в межах фронту, як ноутбук Юпітера, безпосередньо під кодом коду, який його створив. Отримані сюжети потім також будуть зберігатися в документі зошита.
Якщо ви хочете додати сюжети до свого ноутбука Юпітера, то %matplotlib inline
це стандартне рішення. А ще інші магічні команди будуть matplotlib
інтерактивно використовувати в межах Юпітера.
%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 і мають графіки вікон, що спливають під час введення команд. Деякі люди запускають ноутбуки Юпітера та малюють вбудовані графіки для швидкого аналізу даних. Інші вбудовують matplotlib в графічні інтерфейси користувача, такі як wxpython або pygtk для створення багатих додатків. Деякі люди використовують matplotlib у пакетних скриптах для генерування зображень постскрипту за допомогою чисельних симуляцій, а інші запускають сервери веб-додатків для динамічного обслуговування графіків. Для підтримки всіх цих випадків використання matplotlib може орієнтуватися на різні результати, і кожна з цих можливостей називається бекендом; "frontend" - це код, що стоїть перед користувачем, тобто графічний код, тоді як "backkend" виконує всю важку роботу за кадром, щоб зробити фігуру.
Отже, коли ви набираєте% matplotlib inline, він активує вбудований сервер. Як обговорювалося в попередніх публікаціях:
У цьому бекенді вихід команд для побудови графіків відображається в рядку в межах фронту, як ноутбук Юпітера, безпосередньо під кодом коду, який його створив. Отримані сюжети потім також будуть зберігатися в документі зошита.
Це просто означає, що будь-який графік, який ми створюємо як частину нашого коду, буде відображатися в тому ж зошиті, а не в окремому вікні, що сталося б, якби ми не використали цей магічний вислів.
TL; DR
%matplotlib inline
- Відображає вихідний рядокЯдро IPython має можливість відображення ділянок шляхом виконання коду. Ядро IPython призначене для безперебійної роботи з бібліотекою побудови графіків matplotlib, щоб забезпечити цю функціональність.
%matplotlib
- це магічна команда, яка виконує необхідні за кадром настройки для IPython для правильної роботи рука об рукуmatplotlib
; він не виконує жодних команд імпорту Python, тобто жодні імена не додаються до простору імен.
%matplotlib
(доступно лише для ноутбука Юпітер та QtConsole Jupyter)
%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
ви можете уникнути використання специфічної магії та використання IPythonmatplotlib.pyplot.ion()
/,matplotlib.pyplot.ioff()
які мають і переваги роботи поза межами IPython.
Довідка: Різний результат IPython - інтерактивне графікування
Якщо ви працюєте з Блокнотом Юпітера, команда% matplotlib inline зробить, що ваші виведення сюжету відображатимуться в блокноті, а також можуть бути збережені.
Це не обов'язково писати. Для мене це добре працювало без ( %matplotlib
) магічної функції. Я використовую компілятор Sypder, який постачається в Anaconda.