Làm cách nào để đặt 'phụ trợ' trong matplotlib bằng Python?


89

Tôi là người dùng mới của matplotlib, nền tảng của tôi là Ubuntu 10.04 Python 2.6.5

Đây là mã của tôi

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

Lỗi là:

/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()))
  • Tôi đã cài đặt thư viện Anti-Grain Geometry apt-get install libaggnhưng nó không hoạt động.
  • Tôi đã cố gắng sử dụng đối số khác của phụ trợ như 'GTK' và 'TkAgg'.
  • Tôi đã cài đặt python-gtk2-devgói, nhưng vẫn còn lỗi bên dưới.
  • Bất cứ ai có thể cho tôi biết một đối số phụ trợ thực thi và thư viện phụ thuộc của nó?

Đây là lỗi:

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

Câu trả lời:


89

Chương trình phụ trợ hiện đã chọn của bạn, 'agg' không hỗ trợ show ().

AGGbackend là để ghi vào tệp, không phải để hiển thị trong cửa sổ. Xem Câu hỏi thường gặp về phụ trợ tại trang web matplotlib.

ImportError: Không có mô-đun nào có tên _backend_gdk

Đối với lỗi thứ hai, có thể bản phân phối matplotlib của bạn không được biên dịch với hỗ trợ GTK hoặc bạn bỏ lỡ gói PyGTK. Cố gắng cài đặt nó.

Bạn có gọi show()phương thức bên trong một thiết bị đầu cuối hoặc ứng dụng có quyền truy cập vào môi trường đồ họa không?

Hãy thử các phụ trợ GUI khác, theo thứ tự sau:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

cảm ơn bạn rất nhiều các nhân viên sai tôi đã làm là thiết lập matplotlib trước get PyGTK
user504909

1
như một nhận xét bên lề, tôi sẽ thử QTAgg cuối cùng vì nó nhắm mục tiêu đến QT3 và có thể sẽ không được chấp nhận trong giữa kỳ.
tacaswell

29

FYI, tôi thấy mình cần phải đặt matplotlib.use('Agg')đầu tiên trong thứ tự nhập Python. Đối với những gì tôi đang làm (kiểm tra đơn vị cần phải không có đầu) điều đó có nghĩa là

import matplotlib
matplotlib.use('Agg')

ở đầu tập lệnh thử nghiệm chính của tôi. Tôi không phải chạm vào bất kỳ tệp nào khác.


Tôi phải làm điều tương tự khiến tôi rất phiền lòng. Bạn đã bao giờ tìm thấy một giải pháp elegrant khác chưa?
QM.py

Và tôi thấy rằng điều quan trọng là nó phải đứng đầu (không phải sau một số mặt hàng nhập khẩu khác). +1.
Ryan

Có, đây phải là điều tuyệt đối đầu tiên bạn làm trước khi nhập khẩu matplotlib khác.
JakeCowton

19

Điều này cũng có thể được đặt trong tệp cấu hình matplotlibrc(như được giải thích trong thông báo lỗi), ví dụ:

# 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

Bằng cách đó, chương trình phụ trợ không cần phải được mã hóa cứng nếu mã được chia sẻ với người khác. Để biết thêm thông tin, hãy kiểm tra tài liệu .


7

Các lỗi bạn đã đăng không liên quan. Điều đầu tiên là do bạn chọn phần phụ trợ không dành cho mục đích sử dụng tương tác, tức là kết hợp. Bạn vẫn có thể sử dụng (và nên sử dụng) chúng để tạo các âm mưu trong các tập lệnh không yêu cầu tương tác của người dùng.

Nếu bạn muốn một môi trường phòng thí nghiệm tương tác, như trong Matlab / Pylab, rõ ràng bạn phải nhập một phần mềm phụ trợ hỗ trợ việc sử dụng gui, chẳng hạn như Qt4Agg (cần Qt và AGG), GTKAgg (GTK một AGG) hoặc WXAgg (wxWidgets và Agg).

Tôi sẽ bắt đầu bằng cách thử sử dụng WXAgg, ngoài việc nó thực sự phụ thuộc vào cách bạn cài đặt Python và matplotlib (nguồn, gói, v.v.)


3

Trước khi bắt đầu python, bạn có thể làm trong bash

export MPLBACKEND=TkAgg

3

Bạn cũng có thể thử xem biểu đồ trong trình duyệt.

Sử dụng như sau:

matplotlib.use('WebAgg')

2

Tôi gặp sự cố này khi cố gắng biên dịch python, numpy, scipy, matplotlib trong VIRTUAL_ENV của riêng tôi

Trước khi cài đặt matplotlib, bạn phải xây dựng và cài đặt: pygobject pycairo pygtk

Và sau đó thực hiện với matplotlib: Trước khi xây dựng matplotlib, hãy kiểm tra với 'python ./setup.py build --help' nếu chương trình phụ trợ 'gtkagg' được bật. Sau đó xây dựng và cài đặt

Trước khi xuất PKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig


2

Đối với những người mới đến,

matplotlib.pyplot.switch_backend(newbackend)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.