IPython Notebook matplotlibプロットをインラインにする方法


831

MacOS XでIPython NotebookをPython 2.7.2およびIPython 1.1.0で使用しようとしています。

matplotlibグラフィックをインラインで表示できません。

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

私は%pylab inlineipythonコマンドライン引数も試しました--pylab=inlineが、これには違いがありません。

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

インライングラフィックの代わりに、私はこれを取得します:

<matplotlib.figure.Figure at 0x110b9c450>

そしてmatplotlib.get_backend()、私が'module://IPython.kernel.zmq.pylab.backend_inline'バックエンドを持っていることを示しています。


コードスニペットは生成されません<matplotlib.figure.Figure at 0x110b9c450><matplotlib.text.Text at 0x94f9320>(最後の行がタイトルを出力しているため)。とにかく、コード(%matplotlibインラインとplt.show()を使用)はWindowsで期待どおりに機能します
joaquin

それらの提案をありがとう、しかしそれらは私のために働きません。インライングラフィックスがない場合でも、上記の出力が得られます。トラブルシューティングのアドバイスはありますか?
Ian Fiske 2013年

全く分からない。同じpython、同じipython(および同じバックエンド)ですが、ウィンドウ上で動作します。インラインではないときに、プロットが機能していると思いますよね?
ホアキン2013年

2
なしでは%matplotlib inline、カーネルは永続的にビジーのままであり、何も出力されません。それは殺されなければならない。これはMacOSXバックエンドを使用しようとしていますが、何らかの理由で開くことができないと思います。ipythonノートブックを使用しない場合、matplotlibのMacOSXバックエンドは正常に動作します。
Ian Fiske 2013年

1
同じ症状がありましたが、OSX 10.8に32ビットバージョンのCanopyをインストールしたことがわかりました。64ビットバージョンで再インストールすると修正されました。
Vicky T

回答:


1130

%matplotlib inlineノートブックの最初のセルで使用しましたが、動作します。私はあなたが試してみるべきだと思います:

%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

構成ファイルで次の構成オプションを設定することにより、デフォルトで常にすべてのIPythonカーネルをインラインモードで起動することもできます。

c.IPKernelApp.matplotlib=<CaselessStrEnum>
  Default: None
  Choices: ['auto', 'gtk', 'gtk3', 'inline', 'nbagg', 'notebook', 'osx', 'qt', 'qt4', 'qt5', 'tk', 'wx']
  Configure matplotlib for interactive use with the default matplotlib backend.

7
私はこれを正しい答えとしてマークします。代替方法は--pylab inline機能しますが、次の警告が表示されます。 すべてのカーネルをpylabモードで開始することはお勧めできません。将来のリリースでは無効になる予定です。代わりに%matplotlibマジックを使用して、matplotlibを有効にしてください。pylabには多くのインポートが含まれているため、混乱を招き、ノートブックの再現性を損なう可能性があります。
mpavlov 14

1
@ eNord9 @mightwolf:私はiPython(およびMatlabの代わりにPythonプログラミング)を使用することを学んでいます。何をしてimport matplotlib' do versus '[名]としてインポートmatplotlibのを?単純なコメントを許す
TSGM '28

1
@ eNord9 @mightwolf:また、これは「from matplotlib import mpl」と比較してどうですか。
TSGM 2014

2
@TSGM私があなたの質問に対して見た最も良い説明は:effbot.org/zone/import-confusion.htm
mpavlov

ありがとう@ eNord9。更新とすべてが久しぶりなので、コマンドをテストしました。これで、Python 2.7.9およびIPython 3.1.0ですべてが正常に動作します。
Ian Fiske

216

あなたのmatplotlibのバージョンが1.4以上の場合、使用することも可能です

IPython 3.x以降

%matplotlib notebook

import matplotlib.pyplot as plt

古いバージョン

%matplotlib nbagg

import matplotlib.pyplot as plt

両方ともインタラクティブ機能を有効にするnbaggバックエンドをアクティブにします。

nbaggバックエンドを使用したプロットの例


これはで動作しないようです%config InlineBackend.figure_format='retina'。インタラクティブなRetinaフィギュアを取得する方法はありますか?
オロメ

うーん...私は網膜の数字についてあまり専門知識を持っていません。私がつまずいたのはこのリンクだけでしたが、廃止される可能性があります。もっと多くの人が同じことについて疑問に思っているなら、私はここにあなたのSOの質問をリンクします、そしてあなたがそこの答えで幸運を祈ります。ベスト
Løiten

31
この答えは過小評価されています。%matplotlib notebookは、よりも優れた視覚化を提供します%matplotlib inline
Hieu

9
%matplotlib notebookjupyter Notebook 4.1.1 / ubuntu 16.04 / chromeでは、using は機能しません(何かが表示され、その後空白になります)。%matplotlib inline画像は表示されますが、文字どおり「インライン」ではなく、マークダウンテキストの後に表示されます。
マイケル2016

6
%matplotlib inline最初に試してからに切り替えると%matplotlib notebook、空の結果が得られる場合があります。カーネルを再起動して再度実行します。
チェコ語、

91

Ctrl + Enter

%matplotlib inline

マジックライン:D

参照:matplotlibのプロットで


1
@BradleyKreiderまだ死んでいない。または、githubのipython repoにアクセスし、「example」フォルダーに移動して、「Plotting with Matplotlib」ノートブックを見つけます。
CodeFarmer

24

%pylab inlinemagicコマンドを使用します。


14
「ipython notebook --pylab inline [E 15:01:18.182 NotebookApp]コマンドラインでの--pylabの指定のサポートは削除されました。[E 15:01:18.182 NotebookApp] %pylab inlineまたは%matplotlib inlineをノートブック自体で使用してください。 」
Dave X

14

Jupyter(IPython 3)でデフォルトでmatplotlibをインラインにするには:

  1. ファイルを編集 ~/.ipython/profile_default/ipython_config.py

  2. 行を追加 c.InteractiveShellApp.matplotlib = 'inline'

この行を追加してipython_notebook_config.pyも機能しないことに注意してください。それ以外の場合は、JupyterおよびIPython 3.1.0で正常に動作します


10

私はfoobarbecueに同意する必要があります(私は彼の投稿の下にコメントを挿入するだけの十分なレコードがありません):

引数を指定してpythonノートブックを開始しないことをお勧めします--pylab。フェルナンドペレス(ipythonnbの作成者)による%matplotlib inlineと、最初のノートブックコマンドである必要があります。

ここを参照してください:http : //nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%203%20-%20Plotting%20with%20Matplotlib.ipynb



5

anacondaをインストールしましたが、matplotlibがプロットしていません

これを行うと、プロットが開始されます

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

2

この問題は構文の誤りでシミュレートできますが、問題%matplotlib inlineは解決しません。

最初に、プロットを作成する正しい方法の例。eNord9が提供するインポートと魔法ですべてが期待どおりに機能します。

df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))

df_randNumbers1.ix[:,["A","B"]].plot.kde()

ただし、()プロットタイプの最後をオフにすると、ややあいまいな非エラーが表示されます。

誤ったコード:

df_randNumbers1.ix[:,["A","B"]].plot.kde

エラーの例:

<bound method FramePlotMethods.kde of <pandas.tools.plotting.FramePlotMethods object at 0x000001DDAF029588>>

この1行のメッセージ以外に、スタックトレースや、構文エラーを犯したと考える明確な理由はありません。プロットは印刷されません。


これは構文エラーではありません-せず()起動し kde、iPythonは何を言っているkde バインドされた方法、すなわち、。したがって、実際にはiPythonの観点から、これはまったく「エラー」ではないため、スタックトレースがないのはなぜですか。
カイルストランド

1
@KyleStrandありがとうございます。私の投稿をもう一度読んだ後、「%matplotlib inlineコマンドを使用してプロットをインラインで表示できないという問題があると思っていました。本当に、プロットタイプの最後に()を付けるのを忘れたので、それ以外はすべて失敗します。間違いがないか括弧を確認してください。」
Blake M

1

Jupyterの別々のセルでプロットコマンドを実行しているときにも同じ問題がありました:

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         <Figure size 432x288 with 0 Axes>                      #this might be the problem
In [4]:  ax = fig.add_subplot(1, 1, 1)
In [5]:  ax.scatter(x, y)
Out[5]:  <matplotlib.collections.PathCollection at 0x12341234>  # CAN'T SEE ANY PLOT :(
In [6]:  plt.show()                                             # STILL CAN'T SEE IT :(

この問題は、プロットコマンドを単一のセルにマージすることで解決されました。

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         ax = fig.add_subplot(1, 1, 1)
         ax.scatter(x, y)
Out[3]:  <matplotlib.collections.PathCollection at 0x12341234>
         # AND HERE APPEARS THE PLOT AS DESIRED :)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.