「%matplotlib inline」の目的


483

誰かが私に正確に何の使用かを説明でき%matplotlib inlineますか?


22
これは、(Figureオブジェクトのダンプを表示する代わりに)ノートブックでFigureをレンダリングする魔法の関数です。簡単なMatplotlibチュートリアルはこちらdata-blogger.com/2017/11/15/…にあります。
www.data-blogger.com 2017年

6
次のようinlineに入力して、使用可能なバックエンド(など)を確認できます%matplotlib --list
Luis

回答:


286

%matplotlibある魔法機能 IPythonでは。ここでは、関連するドキュメントを引用して、便宜上お読みいただけるようにします。

IPythonには、コマンドラインスタイルの構文で呼び出すことができる事前定義された「マジック関数」のセットがあります。マジックには、ライン指向とセル指向の2種類があります。ラインマジックの前には%文字が付いており、OSコマンドライン呼び出しと同じように機能します。これらは、引数として行の残りの部分を取得します。引数は、括弧や引用符なしで渡されます。ラインマジックは結果を返すことができ、割り当ての右側で使用できます。セルマジックの前には、2つの%%が付けられます。セルマジックは、行の残りの部分だけでなく、その下の行も別の引数として引数として取得する関数です。

%matplotlib inline matplotlibのバックエンドを「インライン」バックエンドに設定します

このバックエンドでは、プロットコマンドの出力は、Jupyterノートブックなどのフロントエンド内のインラインで、それを生成したコードセルのすぐ下に表示されます。結果のプロットは、ノートブックドキュメントにも保存されます。

'inline'バックエンドを使用すると、matplotlibグラフがノートブックのコードの横に含まれます。IPython Notebook matplotlibプロットをインラインで作成する方法も読む価値があります。あなたのコードでそれを使用する方法の参考のために。

インタラクティビティも必要な場合は、ここで説明するように、(IPython 3.xで)nbaggバックエンドを使用できます%matplotlib notebook


4
%matplotlib inline ^

4
@Jadda IPythonを使用していますか?そうでない場合、有効なCPython(Pythonの「標準」インタープリター)ではないため、構文エラーが発生します。IPython Notebookを使用しているのでない限り、とにかくそれを使用することにはほとんど意味がありません。全体のポイントは、プロットをノートブックとインラインでレンダリングすることです。
Aurora0001 2017年

はい。これをSpyder IDE(Anacondaの一部)で使用して

3
その場合、@ Jaddaさん、新しい質問をしているようですね。この回答のコメントよりも質問に注目できるように、関連するすべての詳細をそこに含める必要があります。幸運を。
Aurora0001 2017年

2
わかりました、しかし代わりは何ですか:そのような魔法が活性化されていない場合、どうすればプロットを見ることができますか?
JaakL 2017年

77

IPythonを実行している場合、 %matplotlib inline、プロット出力が表示され、ノートブック内に保存されます。

ドキュメントによると

これを設定するには、プロットまたはインポートをmatplotlib実行する前に、を実行する必要があり%matplotlib magic commandます。これは、IPythonが正しく連携して動作するために必要な舞台裏のセットアップを実行しますmatplotlibます。ただし、実際にはPythonのインポートコマンドは実行されません。つまり、名前空間に名前は追加されません。

IPythonによって提供される特に興味深いバックエンドは inlineバックエンドです。これは、Jupyter NotebookとJupyter QtConsoleでのみ使用できます。次のように呼び出すことができます。

%matplotlib inline

このバックエンドでは、プロットコマンドの出力は、Jupyterノートブックなどのフロントエンド内のインラインで、それを生成したコードセルのすぐ下に表示されます。結果のプロットは、ノートブックドキュメントにも保存されます。


32

Jupyterノートブックにプロットを追加する場合%matplotlib inlineは、標準のソリューションです。また、matplotlibJupyter内でインタラクティブに使用される他の魔法のコマンドがあります。

%matplotlibpltプロットコマンドを実行すると、Figureウィンドウが開き、さらにコマンドを実行してプロットを更新できます。一部の変更は自動的に描画されません。強制的に更新するには、plt.draw()

%matplotlib notebook:ノートブック内に埋め込まれたインタラクティブなプロットにつながり、図をズームしてサイズを変更できます

%matplotlib inline:ノートブックに静止画像のみを描画します


7

IPython 5.0とmatplotlib 2.0以降では、IPythonの特定の魔法の使用を回避し、IPythonの matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()外部で作業することの利点も備えています。

ipythonのドキュメント


これはバックエンドの変更とは異なると思います。バックエンドがinlineでない限り、プロットは外側のウィンドウで生成され、ノートブックに表示するにはdisplay()を使用する必要があります。
Vincenzooo

5

これは、コードの一部として作成しているグラフが同じノートブックに表示され、この魔法のステートメントを使用しなかった場合に発生する別のウィンドウには表示されないことを意味します。


4

バックエンドがわからない場合は、https//matplotlib.org/tutorials/introductory/usage.html#backendsを参照してください。

一部の人々は、pythonシェルから対話的にmatplotlibを使用し、コマンドを入力すると、プロットウィンドウがポップアップします。一部の人々は、Jupyterノートブックを実行して、迅速なデータ分析のためにインラインプロットを描画します。リッチアプリケーションを構築するためにwxpythonやpygtkなどのグラフィカルユーザーインターフェイスにmatplotlibを埋め込むものもあります。バッチスクリプトでmatplotlibを使用して数値シミュレーションからポストスクリプトイメージを生成する人もいれば、Webアプリケーションサーバーを実行して動的にグラフを提供する人もいます。これらのすべての使用例をサポートするために、matplotlibは異なる出力を対象とすることができ、これらの各機能はバックエンドと呼ばれます。「フロントエンド」はユーザー向けのコード、つまりプロットコードですが、「バックエンド」は図を作成するために舞台裏ですべてのハードワークを実行します。

したがって、%matplotlib inlineと入力すると、インラインバックエンドがアクティブになります。以前の投稿で説明したように:

このバックエンドでは、プロットコマンドの出力は、Jupyterノートブックなどのフロントエンド内のインラインで、それを生成したコードセルのすぐ下に表示されます。結果のプロットは、ノートブックドキュメントにも保存されます。


3

それを明確に説明するには:

このようにしたくない場合:

ここに画像の説明を入力してください

追加 %matplotlib inline

ここに画像の説明を入力してください

そこにjupyterノートブックにあります。


2

TL; DR

%matplotlib inline -出力をインラインで表示します


IPythonカーネルには、コードを実行してプロットを表示する機能があります。IPythonカーネルは、matplotlibプロットライブラリとシームレスに連携してこの機能を提供するように設計されています。

%matplotlibIPythonがと連携して正しく動作するために必要な舞台裏の設定を実行する魔法のコマンド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-GTK 3.xキャンバスへのAggレンダリング(PyGObjectおよびpycairoまたはcairocffiが必要)。

matplotlibインタラクティブバックエンドの詳細:こちら


で開始するIPython 5.0matplotlib 2.0、IPythonの特定の魔法の使用を回避し、IPythonの 外部で作業する利点もあるmatplotlib.pyplot.ion()/ matplotlib.pyplot.ioff()を使用できます。

参照:IPythonリッチ出力-インタラクティブプロット


本当の初心者向けの質問、申し訳ありません。「IPythonカーネル」とは何か、「マジックコマンド」とは何ですか。Pythonが突然私に分裂し、Pythonを使わなくなったのですか?これらの概念について聞いたことがありません。
lb_so

pythonノートブック(ipynb)の場合-ipythonカーネルまたはjupyterカーネルは、プロジェクトで使用されるpython(および依存関係)のバージョンです。jupyterノートブックを起動してから、カーネルを変更して、異なるPythonの構成でセルを実行し、環境変数などを構成できます。
Ani Menon

@Ib_so Magicコマンドはipython / jupyterの機能です。詳細はこちら。
Ani Menon

0

Jupyter Notebookを実行している場合、%matplotlibインラインコマンドは、プロット出力をノートブックに表示し、保存することもできます。


-8

それを書くことは必須ではありません。(%matplotlib)魔法の機能がなくてもうまくいきました。私は、Anacondaに付属しているSypderコンパイラーを使用しています。


13
SpyderはIDEではなく、コンパイラです。
Matthieu

3
あなたの答えはOPの質問には答えませんでしたが、私の答えにはなりました。ありがとうございました。
EngrStudent
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.