Python'da matplotlib'de 'arka ucu' nasıl ayarlayabilirim?


91

Matplotlib'in yeni kullanıcısıyım, platformum Ubuntu 10.04 Python 2.6.5

Bu benim kodum

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt 
plt.plot([1,2,3])

Hata şudur:

/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 kitaplığını kurdum apt-get install libaggama çalışmıyor.
  • Arka uçta 'GTK' ve 'TkAgg' gibi başka bir argüman kullanmayı denedim.
  • python-gtk2-devPaketi yükledim , ancak yine de hata aşağıda.
  • Biri bana çalıştırılabilir bir arka uç argümanı ve bağımlılık kitaplığı söyleyebilir mi?

İşte hata:

>>> 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

Yanıtlar:


93

Şu anda seçtiğiniz arka uç, 'agg', show () 'u desteklemiyor.

AGGarka uç bir pencerede oluşturmak için değil dosyaya yazmak içindir. Matplotlib web sitesinde arka uç SSS bölümüne bakın .

ImportError: _backend_gdk adlı modül yok

İkinci hata için belki matplotlib dağıtımınız GTK desteği ile derlenmemiş olabilir veya PyGTK paketini kaçırmışsınızdır. Yüklemeyi deneyin.

show()Yöntemi, grafiksel bir ortama erişimi olan bir terminal veya uygulama içinde mi çağırıyorsunuz ?

Diğer GUI arka uçlarını şu sırayla deneyin:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

çok teşekkür ederim, yaptığım yanlış personel PyGTK'yı almadan önce matplotlib'i kurdu
user504909

1
bir yan yorum olarak, QT3'ü hedefleyen ve muhtemelen orta vadede kullanımdan kaldırılacak olan QTAgg'ı en son olarak deneyeceğim.
tacaswell

30

Bilginize, matplotlib.use('Agg')Python içe aktarma sırasını ilk sıraya koymam gerektiğini fark ettim . Yaptığım şey için (birim testinin başsız olması gerekiyordu)

import matplotlib
matplotlib.use('Agg')

ana test komut dosyamın en üstünde. Başka hiçbir dosyaya dokunmam gerekmedi.


Beni çok rahatsız eden aynı şeyi yapmalıyım. Hiç başka bir şık çözüm buldunuz mu?
QM.py

Ve en tepede olmasının önemli olduğunu anladım (diğer bazı ithalatlardan sonra değil). +1.
Ryan

Evet, bu, diğer herhangi bir matplotlib ithalatından önce yaptığınız mutlak ilk şey olmalıdır.
JakeCowton

19

Bu, yapılandırma dosyasında da ayarlanabilir matplotlibrc(hata mesajında ​​açıklandığı gibi), örneğin:

# 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

Bu şekilde, kod başkalarıyla paylaşılıyorsa arka ucun sabit kodlanması gerekmez. Daha fazla bilgi için belgelere bakın .


7

Gönderdiğiniz hatalar ilgisizdir. İlki, etkileşimli kullanım için olmayan bir arka uç seçmenizdir, yani agg. Bunları, kullanıcı etkileşimi gerektirmeyen komut dosyalarında çizim oluşturmak için kullanmaya devam edebilirsiniz (ve kullanmanız gerekir).

Matlab / Pylab'da olduğu gibi etkileşimli bir laboratuvar ortamı istiyorsanız, Qt4Agg (Qt ve AGG'ye ihtiyaç duyar), GTKAgg (GTK ve AGG) veya WXAgg (wxWidgets ve Agg) gibi gui kullanımını destekleyen bir arka uç içe aktarmanız gerekir.

WXAgg kullanmaya çalışmakla başlayacağım, bunun dışında gerçekten Python ve matplotlib (kaynak, paket vb.)


4

Python'a başlamadan önce, bash'ta yapabilirsiniz

export MPLBACKEND=TkAgg

3

Grafiği bir tarayıcıda da görüntülemeyi deneyebilirsiniz.

Aşağıdakileri kullanın:

matplotlib.use('WebAgg')

2

Python, numpy, scipy, matplotlib'i kendi VIRTUAL_ENV'imde derlemeye çalışırken buna vurdum

Matplotlib'i kurmadan önce kurmanız ve kurmanız gerekir: pygobject pycairo pygtk

Ve sonra bunu matplotlib ile yapın: Matplotlib oluşturmadan önce, 'python ./setup.py build --help' ile 'gtkagg' arka uç etkinse kontrol edin. Sonra inşa edin ve kurun

Dışa aktarmadan önce PKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig


2

Yeni gelenler için,

matplotlib.pyplot.switch_backend(newbackend)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.