Pythonのmatplotlibで「バックエンド」を設定するにはどうすればよいですか?


89

私はmatplotlibの新しいユーザーです、私のプラットフォームはUbuntu 10.04 Python2.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()))
  • Anti-Grain Geometryライブラリをインストールしましたapt-get install libaggが、機能しません。
  • 'GTK'や 'TkAgg'のようなバックエンドの他の引数を使おうとしました。
  • 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

回答:


89

現在選択されているバックエンド 'agg'はshow()をサポートしていません。

AGGバックエンドはファイルへの書き込み用であり、ウィンドウでのレンダリング用ではありません。matplotlibWebサイトのバックエンドFAQを参照してください。

ImportError:_backend_gdkという名前のモジュールがありません

2番目のエラーについては、matplotlibディストリビューションがGTKサポートでコンパイルされていないか、PyGTKパッケージを見逃している可能性があります。インストールしてみてください。

show()グラフィカル環境にアクセスできる端末またはアプリケーション内でメソッドを呼び出しますか?

他のGUIバックエンドを次の順序で試してください。

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

PyGTKを入手する前にmatplotlibをセットアップするのは、間違ったスタッフに感謝します
user504909 2011

1
補足として、QT3を対象とし、中期的に非推奨になる可能性があるため、最後にQTAggを試してみます。
tacaswell 2013年

29

参考までにmatplotlib.use('Agg')、Pythonのインポート順序を最初に置く必要があることがわかりました。私がやっていたこと(ユニットテストはヘッドレスである必要がありました)のために、それは置くことを意味しました

import matplotlib
matplotlib.use('Agg')

マスターテストスクリプトの上部にあります。他のファイルに触れる必要はありませんでした。


私は私をとても悩ませている同じことをしなければなりません。別のエレガントな解決策を見つけたことがありますか?
QM.py 2017

そして、それが一番上にあることが重要であることがわかりました(他の特定のインポートの後ではありません)。+1。
ライアン

はい、これは他のmatplotlibインポートの前に行う絶対的な最初のことでなければなりません。
JakeCowton 2018年

19

これは、次のように構成ファイルで設定することもできます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

そうすれば、コードが他の人と共有されている場合、バックエンドをハードコーディングする必要はありません。詳細については、ドキュメントを確認してください。


7

あなたが投稿したエラーは無関係です。1つ目は、インタラクティブな使用を目的としていないバックエンド、つまりaggを選択したためです。ユーザーの操作を必要としないスクリプトでプロットを生成するために、これらを引き続き使用できます(使用する必要があります)。

Matlab / Pylabのようにインタラクティブなラボ環境が必要な場合は、Qt4Agg(QtとAGGが必要)、GTKAgg(GTK、AGG)、WXAgg(wxWidgetsとAgg)などのGUIの使用をサポートするバックエンドをインポートすることは明らかです。

まず、WXAggを使用することから始めますが、それは、Pythonとmatplotlib(ソース、パッケージなど)をどのようにインストールしたかによって異なります。



3

ブラウザでグラフを表示することもできます。

以下を使用してください。

matplotlib.use('WebAgg')

2

自分のVIRTUAL_ENVでpython、numpy、scipy、matplotlibをコンパイルしようとしたときにこれにぶつかりました

matplotlibをインストールする前に、ビルドしてインストールする必要があります:pygobject pycairo pygtk

そして、matplotlibでそれを行います。matplotlibをビルドする前に、「gtkagg」バックエンドが有効になっているかどうかを「python ./setup.pybuild--help」で確認します。次に、ビルドしてインストールします

エクスポートする前にPKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.