ฉันจะตั้งค่า 'แบ็กเอนด์' ใน matplotlib ใน Python ได้อย่างไร


91

ฉันเป็นผู้ใช้ 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()))
  • ฉันติดตั้งไลบรารี 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

คำตอบ:


93

แบ็กเอนด์ที่คุณเลือกในปัจจุบัน "agg" ไม่รองรับการแสดง ()

AGGแบ็กเอนด์ใช้สำหรับเขียนลงไฟล์ไม่ใช่สำหรับการแสดงผลในหน้าต่าง ดูคำถามที่พบบ่อยเกี่ยวกับแบ็กเอนด์ที่เว็บไซต์ matplotlib

ImportError: ไม่มีโมดูลชื่อ _backend_gdk

สำหรับข้อผิดพลาดที่สองบางทีการกระจาย matplotlib ของคุณไม่ได้รวบรวมด้วยการสนับสนุน GTK หรือคุณพลาดแพ็คเกจ PyGTK ลองติดตั้งดู

คุณเรียกใช้show()เมธอดภายในเทอร์มินัลหรือแอปพลิเคชันที่เข้าถึงสภาพแวดล้อมแบบกราฟิกหรือไม่?

ลองใช้แบ็กเอนด์ GUI อื่น ๆ ตามลำดับนี้:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

ขอบคุณมากที่ฉันทำผิดคือตั้งค่า matplotlib ก่อนรับ PyGTK
user504909

1
ในฐานะความคิดเห็นด้านข้างฉันจะลอง QTAgg เป็นครั้งสุดท้ายเนื่องจากมีเป้าหมาย QT3 และมีแนวโน้มที่จะเลิกใช้งานในช่วงกลาง
tacaswell

30

FYI ฉันพบว่าฉันต้องใส่matplotlib.use('Agg')คำสั่งนำเข้า Python ก่อน สำหรับสิ่งที่ฉันกำลังทำอยู่ (การทดสอบหน่วยจำเป็นต้องไม่มีหัว) นั่นหมายถึงการวาง

import matplotlib
matplotlib.use('Agg')

ที่ด้านบนของสคริปต์ทดสอบหลักของฉัน ฉันไม่ต้องแตะไฟล์อื่น ๆ


ฉันต้องทำสิ่งเดียวกันซึ่งทำให้ฉันลำบากมาก คุณเคยพบโซลูชันที่หรูหราอื่น ๆ หรือไม่?
QM.py

และฉันพบว่าสิ่งสำคัญคือต้องอยู่ในอันดับต้น ๆ (ไม่ใช่หลังจากการนำเข้าอื่น ๆ ) +1.
Ryan

ใช่นี่จะต้องเป็นสิ่งแรกที่คุณทำก่อนการนำเข้า matplotlib อื่น ๆ
JakeCowton

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

ข้อผิดพลาดที่คุณโพสต์ไม่เกี่ยวข้องกัน อันแรกเกิดจากการที่คุณเลือกแบ็กเอนด์ที่ไม่ได้มีไว้สำหรับการใช้งานแบบโต้ตอบเช่น agg คุณยังสามารถใช้ (และควรใช้) สิ่งเหล่านี้สำหรับการสร้างพล็อตในสคริปต์ที่ไม่ต้องการการโต้ตอบกับผู้ใช้

หากคุณต้องการสภาพแวดล้อมห้องปฏิบัติการแบบโต้ตอบเช่นใน Matlab / Pylab คุณจะต้องนำเข้าแบ็กเอนด์ที่รองรับการใช้งาน gui เช่น Qt4Agg (ต้องใช้ Qt และ AGG), GTKAgg (GTK an AGG) หรือ WXAgg (wxWidgets และ Agg)

ฉันจะเริ่มต้นด้วยการพยายามใช้ WXAgg นอกเหนือจากนั้นมันขึ้นอยู่กับว่าคุณติดตั้ง Python และ matplotlib อย่างไร (แหล่งที่มาแพ็คเกจ ฯลฯ )



3

คุณยังสามารถลองดูกราฟในเบราว์เซอร์

ใช้สิ่งต่อไปนี้:

matplotlib.use('WebAgg')

2

ฉันกดสิ่งนี้เมื่อพยายามรวบรวม python, numpy, scipy, matplotlib ใน VIRTUAL_ENV ของฉันเอง

ก่อนติดตั้ง matplotlib คุณต้องสร้างและติดตั้ง: pygobject pycairo pygtk

จากนั้นทำด้วย matplotlib: ก่อนสร้าง matplotlib ให้ตรวจสอบด้วย "python ./setup.py build --help" หากเปิดใช้งานแบ็กเอนด์ "gtkagg" จากนั้นสร้างและติดตั้ง

ก่อนส่งออก PKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.