web-dev-qa-db-ja.com

IPythonノートブックのmatplotlibプロトコルをオンラインにする方法

私はPython 2.7.2とIPython 1.1.0でMacOS X上でIPythonノートブックを使用しようとしています。

Matplotlibグラフィックをインラインで表示することができません。

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

%pylab inlineとipythonのコマンドライン引数--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'バックエンドを持っていることを示しています。

728
Ian Fiske

私はノートブックの最初のセルに%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.
1012
eNord9

Matplotlibのバージョンが1.4を超えている場合は、それを使用することも可能です。

IPython 3.x以上

%matplotlib notebook

import matplotlib.pyplot as plt

旧バージョン

%matplotlib nbagg

import matplotlib.pyplot as plt

どちらも nbaggバックエンド をアクティブにして、対話機能を有効にします。

Example plot with the nbagg backend

194
Løiten

Ctrl + Enter

%matplotlib inline

マジックライン:D

Matplotlibでプロットする を参照してください。

86
CodeFarmer

Joaquinが彼の答えをコメントとして投稿した理由はわかりませんが、それが正しい答えです。

ipythonをipython notebook --pylab inlineで起動

編集:わかりました、これは今下のコメントに従って非推奨です。 %pylab inline magicコマンドを使用してください。

23
foobarbecue

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

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

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

この行をipython_notebook_config.pyに追加してもうまくいかないことに注意してください。そうでなければそれはJupyterとIPython 3.1.0でうまく動きます

12
volodymyr

私はfoobarbecueに同意する必要があります(私は彼の投稿の下に単純にコメントを入れることができるほど十分なrecsがありません):

Pythonノートブックを引数--pylabで開始しないことを推奨します。そしてFernando Perez(ipythonnbの作成者)によれば、%matplotlib inlineが最初のノートブックコマンドになるはずです。

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

10
thescoop

私はかなり満足できる回避策を見つけました。 Anaconda Python をインストールしました。これで、箱から出してすぐに動作します。

7
Ian Fiske

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

私がこれをやったときそれはプロットを開始

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

Ubuntuでは、グラフ作成後にplt.show()がある限り、%matplotlib inlineを削除できます。

4
tcratius

構文の間違いでこの問題をシミュレートすることはできますが、%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行のメッセージ以外には、スタックトレースなどの構文エラーがあると思われる明白な理由はありません。プロットは印刷されません。

2
Blake M

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 :)
0
krubo