私はmatplotlibの新しいユーザーです。プラットフォームはUbuntu 10.04 Python 2.6.5です
これは私のコードです
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot([1,2,3])
エラーは次のとおりです。
/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py:41: UserWarning:
Your currently selected backend, 'agg' does not support show().
Please select a GUI backend in your matplotlibrc file ('/usr/local/lib/python2.6/dist-packages/matplotlib/mpl-data/matplotlibrc')
or with matplotlib.use()
(backend, matplotlib.matplotlib_fname()))
apt-get install libagg
をインストールしましたが、機能しません。python-gtk2-dev
パッケージをインストールしましたが、引き続きエラーが発生します。エラーは次のとおりです。
>>> matplotlib.use('GTK')
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/matplotlib/pyplot.py", line 95, in <module>
new_figure_manager, draw_if_interactive, show = pylab_setup()
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup
globals(),locals(),[backend_name])
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gtk.py", line 28, in <module>
from matplotlib.backends.backend_gdk import RendererGDK, FigureCanvasGDK
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gdk.py", line 29, in <module>
from matplotlib.backends._backend_gdk import pixbuf_get_pixels_array
ImportError: No module named _backend_gdk
現在選択されているバックエンド、「agg」はshow()をサポートしていません。
AGG
バックエンドは、ウィンドウへのレンダリング用ではなく、ファイルへの書き込み用です。 matplotlib Webサイトの バックエンドFAQ を参照してください。
ImportError:_backend_gdkという名前のモジュールはありません
2番目のエラーについては、matplotlibディストリビューションがGTKサポートを使用してコンパイルされていないか、PyGTKパッケージが欠落しています。それをインストールしてみてください。
グラフィカル環境にアクセスできる端末またはアプリケーション内でshow()
メソッドを呼び出しますか?
次の順序で他のGUIバックエンドを試してください。
TkAgg
WX
QTAgg
QT4Agg
参考までに、matplotlib.use('Agg')
を最初にPythonインポート順序に配置する必要があることがわかりました。私がやっていたこと(ユニットテストはヘッドレスである必要がありました)
import matplotlib
matplotlib.use('Agg')
マスターテストスクリプトの上部にあります。他のファイルに触れる必要はありませんでした。
これは、構成ファイルmatplotlibrc
(エラーメッセージで説明)で設定することもできます。たとえば、
# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
# CocoaAgg MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
backend : Agg
そうすれば、コードが他の人と共有されている場合、バックエンドをハードコーディングする必要はありません。詳細については、 documentation を確認してください。
投稿したエラーは無関係です。最初の理由は、インタラクティブな使用を意図していないバックエンド、つまりaggを選択したためです。ユーザーの操作を必要としないスクリプトでプロットを生成するために、これらを引き続き使用できます(使用する必要があります)。
Matlab/Pylabのようにインタラクティブなラボ環境が必要な場合は、Qt4Agg(QtとAGGが必要)、GTKAgg(GTKとAGG)、WXAgg(wxWidgetsとAgg)など、guiの使用をサポートするバックエンドを明らかにインポートします。
WXAggを使用しようとすることから始めますが、それはPythonとmatplotlib(ソース、パッケージなど)のインストール方法に大きく依存します。
私自身のVIRTUAL_ENVでpython、numpy、scipy、matplotlibをコンパイルしようとしたときにこれをヒットしました
Matplotlibをインストールする前に、ビルドしてインストールする必要があります:pygobject pycairo pygtk
そして、matplotlibでそれを行います。matplotlibをビルドする前に、「gtkagg」バックエンドが有効になっている場合、「python ./setup.py build --help」で確認します。次に、ビルドしてインストールします
エクスポートの前にPKG_CONFIG_PATH = $ VIRTUAL_ENV/lib/pkgconfig
Pythonを開始する前に、bashで行うことができます
export MPLBACKEND=TkAgg