matplotlibにプロットウィンドウがありません


89

シナプスパッケージシステムを使用してUbuntu 9.10にmatplotlibをインストールしました。ただし、次の簡単な例を試すと

>>> from pylab import plot;
>>> plot([1,2,3],[1,2,3])
[<matplotlib.lines.Line2D object at 0x9aa78ec>]

プロットウィンドウが表示されません。プロットウィンドウを表示する方法に関するアイデアはありますか?


8
pylabはデフォルトではプロットを表示しません。描画と定数の更新はコストがかかるためです。明示的に行う必要がありますshow()
Alok Singhal、2010年

1
この問題に関するいくつかの公式ドキュメント:matplotlib.org/faq/...
stephenbez

回答:



38

pylab.show() 動作しますがブロックします(ウィンドウを閉じる必要があります)。

より便利な解決策は、pylab.ion()開始時に(対話モードをオンにして)実行することです。すべての(同等のpylab)pyplot.*コマンドは、そのプロットをすぐに表示します。インタラクティブモードの詳細公式Webサイトを参照してください。

さらに便利なipython -pylab--pylab新しいバージョンでは)を使用します。これにより、from … import …一部をスキップできます(%pylab新しいIPythonバージョンでも機能します)。


1
pylab.show()でも、フィギュアを開くには最初に電話する必要があります。
スティーブTjoa

3
@Steve:私の経験では、これはバックエンドに強く依存しています。通常のPythonシェルがインストールされているMac OS Xでは、show()(またはdraw()を実行する必要はありません):plot()は新しいウィンドウを開きます。
Eric O Lebigot、2010年

1
あ、そう。いい視点ね。Linuxでのipythonの経験しかありません。
スティーブTjoa

draw()は機能しませんが、pylab.ion()は機能します。私はOSXを使用しています
user1506145

ここで最新のMatplotlibを使用したPythonシェルで同じことを行います。回答を更新しました。ありがとう。
Eric O Lebigot 2013


11

以下のコードスニペットは、EclipseとPythonシェルの両方で機能します。

import numpy as np
import matplotlib.pyplot as plt

# Come up with x and y
x = np.arange(0, 5, 0.1)
y = np.sin(x)

# Just print x and y for fun
print x
print y

# Plot the x and y and you are supposed to see a sine curve
plt.plot(x, y)

# Without the line below, the figure won't show
plt.show()

他の多くの答えが明らかにするように、これは現時点ではうまくいくかもしれませんが、それはすべてあなたのmatplotlibバックエンドがどのように設定されているかに依存します。
nealmcb 2014年

9

エラーが表示されますか?これは、バックエンドを設定していないという問題の可能性があります。Pythonインタープリターまたは.matplotlib/matplotlibrcホームディレクトリの設定ファイル()から設定できます。

あなたができるコードでバックエンドを設定するには

import matplotlib
matplotlib.use('Agg')

ここで、 'Agg'はバックエンドの名前です。存在するバックエンドは、インストールとOSによって異なります。

http://matplotlib.sourceforge.net/faq/installing_faq.html#backends

http://matplotlib.org/users/customizing.html


1
完全に機能します。ありがとうございます。明確にするために、(これがもちろん機能していることがわかったら)最も簡単なことは、バックエンドをに設定する.matplotlib/matplotlibrcことbackend: Aggです。その後、use毎回明示的に1つにする必要はありません:)
dsummersl '25

2

最新のIPythonは、--matplotlibオプションのバックエンドパラメーターと共に" "引数を使用します。デフォルトは「auto」で、通常MacとWindowsでは十分です。Ubuntuや他のLinuxディストリビューションではテストしていませんが、動作することを期待しています。

ipython --matplotlib

0

問題が発生した場合 pylab.show()IPythonウィンドウがフリーズ(これはMac OS X固有である可能性があります。不明です)、IPythonウィンドウでcmd-cを押し、プロットウィンドウに切り替えると、ブレークアウトします。

どうやら、将来のへの呼び出しpylab.show()はIPythonウィンドウをフリーズせず、最初の呼び出しのみをフリーズします。残念ながら、matplotlibを再インストールするたびに、プロットウィンドウの動作やshow()との相互作用が変化するため、この解決策が常に適用されるとは限りません。


0

--pylabオプションでIPythonを開始する場合は、show()またはを呼び出す必要はありませんdraw()。これを試して:

ipython  --pylab=inline

0

--pylabもはやのために動作しないJupyterが、幸い私たちは中に微調整を加えることができipython_config.py、両方を取得するために、ファイルpylabだけでなく、 autoreload機能。

c.InteractiveShellApp.extensions = ['autoreload', 'pylab']
c.InteractiveShellApp.exec_lines = ['%autoreload 2', '%pylab']

0

あなたがAnacondaとSpyderのユーザーであるなら、あなたにとって最良の解決策はそれです:

ツール->設定-> Ipythonコンソール->グラフィックセクション

次に、グラフィックスサポート(Matplotlib)セクションで:

2つの利用可能なオプションを選択します

そしてグラフィックバックエンドで

自動を選択


-5

easy_installを使用する別の可能性は、matplotlibの最新バージョンを必要とする必要があることです。試してください:

import pkg_resources
pkg_resources.require("matplotlib")

matplotlibまたはそのモジュールをインポートする前。


2
これmatplotlibはインストールされていることを確認するだけで、ウィンドウの処理方法には影響しません。
tacaswell 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.