“UserWarning: Matplotlib hiện đang sử dụng agg, là một phần mềm phụ trợ không phải GUI, vì vậy không thể hiển thị con số.” khi vẽ đồ thị bằng pyplot trên Pycharm


125

Tôi đang cố gắng vẽ một đồ thị đơn giản bằng pyplot, ví dụ:

import matplotlib.pyplot as plt
plt.plot([1,2,3],[5,7,4])
plt.show()

nhưng con số không xuất hiện và tôi nhận được thông báo sau:

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

Tôi đã thấy ở một số nơi người ta phải thay đổi cấu hình của matplotlib bằng cách sử dụng như sau:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

Tôi đã làm điều này, nhưng sau đó nhận được thông báo lỗi vì nó không thể tìm thấy mô-đun:

ModuleNotFoundError: No module named 'tkinter'

Sau đó, tôi đã cố gắng cài đặt "tkinter" bằng pip install tkinter(bên trong môi trường ảo), nhưng nó không tìm thấy:

Collecting tkinter
  Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter

Tôi cũng nên lưu ý rằng tôi đang chạy tất cả những điều này trên Pycharm Community Edition IDE sử dụng môi trường ảo và hệ điều hành của tôi là Linux / Ubuntu 18.04.

Tôi muốn biết cách tôi có thể giải quyết vấn đề này để có thể hiển thị biểu đồ.


7
Quên về biểu đồ trong giây lát. Vấn đề của bạn là cài đặt tkinter. Bạn đã thử bất kỳ giải pháp nào có sẵn cho vấn đề đó, ví dụ: stackoverflow.com/questions/4783810/install-tkinter-for-python ?
Tầm quan

3
Bạn thực sự đang sử dụng tkinter cho bất cứ thứ gì hay bạn chỉ chọn nó như một phần mềm phụ trợ?
G. Anderson

1
@ImportanceOfBeingErnest: Cảm ơn bạn đã gợi ý. Tôi thực sự sẽ tập trung vào việc cài đặt tkinter trước. Tôi sẽ xem xét liên kết bạn đã cung cấp và xem liệu tôi có thể làm được gì từ nó không.
johnwolf1987

1
@ G.Anderson: Tôi không biết tkinter là gì trước khi tôi gặp lỗi này với matplotlib. Bây giờ tôi đang cố gắng cài đặt nó chỉ để có thể hiển thị đồ thị (vì vậy có, tôi đoán tôi đã chọn nó như một phụ trợ plt). Nếu bạn biết bất kỳ cách nào khác (tức là không sử dụng tkinter), tôi sẽ rất vui khi nghe nó.
johnwolf1987

2
@ G.Anderson: Tôi đã chạy tập lệnh để chuyển qua các phần phụ trợ khác nhau. Nó chỉ ra rằng chỉ có TkAgg là có sẵn! Thật vậy, tôi vừa mới cài đặt nó trước khi thử nghiệm tập lệnh.
johnwolf1987

Câu trả lời:


191

Tôi đã tìm thấy giải pháp cho vấn đề của mình (nhờ sự trợ giúp của ImportanceOfBeingErnest ).

Tất cả những gì tôi phải làm là cài đặt tkinterthông qua terminal bash của Linux bằng lệnh sau:

sudo apt-get install python3-tk

thay vì cài đặt nó bằng piphoặc trực tiếp trong môi trường ảo trong Pycharm.


7
Thực ra, tôi cũng nhận ra rằng kể từ khi tôi cài đặt Tkinter, tôi không cần phải thêm hai dòng đầu tiên của mã của tôi nữa ( import matplotlibmatplotlib.use('TkAgg'))
johnwolf1987

Để hoàn thiện, trong OpenSuse Leap, gói mà tôi phải cài đặt được gọi python3-matplotlib-tk.
Eldrad

5
Câu trả lời này có thể đề cập đến đó tkinterlà phiên bản python cụ thể theo nghĩa là lệnh cụ thể này sẽ cài đặt tkinterriêng cho phiên bản python mặc định của bạn. Giả sử bạn có cài đặt phiên bản python khác nhau cho các env ảo khác nhau. Trong trường hợp đó, bạn sẽ phải cài đặt nó cho phiên bản python mong muốn được sử dụng trong địa điểm làm việc đó. Ví dụ, trong trường hợp của tôi: sudo apt-get install python3.7-tk. Không biết điều này đã khiến tôi phải vật lộn trong một khoảng thời gian hợp lý để không gặp lỗi 'tkinter' tên mô-đun, ngay cả sau khi cài đặt nó cho phiên bản python toàn cầu của tôi.
xicocaio

Tôi phải cài đặt một Thiết bị đầu cuối Linux Bash trên PC của mình để chạy lệnh này. Va no đa hoạt động! Xem howtogeek.com/249966/...
arame3333

38

Trong trường hợp của tôi, thông báo lỗi ngụ ý rằng tôi đang làm việc trong một bảng điều khiển không đầu. Vì vậy, plt.show()không thể hoạt động. Những gì hiệu quả đang gọi plt.savefig:

import matplotlib.pyplot as plt

plt.plot([1,2,3], [5,7,4])
plt.savefig("mygraph.png")

Tôi đã tìm thấy câu trả lời trên kho lưu trữ github .


16

Nếu bạn sử dụng Arch Linux (các bản phân phối như Manjarohoặc Antegros), chỉ cần gõ:

sudo pacman -S tk

Và tất cả sẽ hoạt động hoàn hảo!


1
Cảm ơn bạn. Đang tìm kiếm điều đó.
logicOnAbstraction

7

Hãy thử import tkintervì pycharm đã cài đặt tkinter cho bạn, tôi đã tìm Cài đặt tkinter cho Python

Bạn có thể thử:

import tkinter
import matplotlib
matplotlib.use('TkAgg')
plt.plot([1,2,3],[5,7,4])
plt.show()

như một cách cài đặt tkinter

Mình đã thử theo cách của bạn, có vẻ như không có lỗi chạy ở máy mình, nó hiện thành công hình. có thể vì pycharm có tkinter dưới dạng gói hệ thống, vì vậy bạn không cần cài đặt nó. Nhưng nếu bạn không thể tìm thấy tkinter bên trong, bạn có thể truy cập Tkdocs để xem cách cài đặt tkinter, như nó đã đề cập, tkinter là một gói cốt lõi cho python.


Cảm ơn bạn đã gợi ý. Thật không may, nó không hoạt động ( ModuleNotFoundError: No module named 'tkinter'). Tôi sẽ thử cài đặt tkinter theo một số cách khác.
johnwolf1987

6

Tôi cũng gặp vấn đề này trong PyCharm. Sự cố này là do bạn không có mô-đun tkinter trong máy của mình.

Để cài đặt, hãy làm theo các bước dưới đây (chọn hệ điều hành thích hợp của bạn)

Đối với người dùng ubuntu

 sudo apt-get install python-tk

hoặc là

 sudo apt-get install python3-tk

Đối với người dùng Centos

 sudo yum install python-tkinter

hoặc là

 sudo yum install python3-tkinter

Đối với Windows, sử dụng pip để cài đặt tk

Sau khi cài đặt tkinter, hãy khởi động lại Pycharm của bạn và chạy mã của bạn, nó sẽ hoạt động


3

Cài đặt đơn giản

pip3 install PyQt5==5.9.2

Nó làm việc cho tôi.


Yup, nó hoạt động! Tôi đã cài đặt nó bên trong env ảo của mình thông qua thiết bị đầu cuối của PyCharm.
WH Lee

Tôi thực hiện "pip3 install PyQt5" mà không chỉ định số phiên bản.
oraclesoon

1

Bạn có thể thay đổi matplotlib bằng cách sử dụng phụ trợ bằng lệnh from aggto Tkinter TKAggusing

matplotlib.use('TKAgg',warn=False, force=True)

Điều này rất hữu ích do thực tế là tôi không phải tải lại bảng điều khiển ipython tương tác của mình lol. Cảm ơn
Iulian Pinzaru

0

Linux Mint 19. Đã giúp tôi:

sudo apt install tk-dev

PS biên dịch lại trình thông dịch python sau khi cài đặt gói.


0

Chỉ trong trường hợp nếu điều này giúp bất kỳ ai.

Phiên bản Python: Nền tảng 3.7.7: Ubuntu 18.04.4 LTS

Điều này đi kèm với phiên bản python 3.6.9 mặc định, tuy nhiên tôi đã cài đặt phiên bản python 3.7.7 của riêng mình trên đó (cài đặt xây dựng nó từ nguồn)

tkinter đã không hoạt động ngay cả khi help('module')tkinter hiển thị trong danh sách.

Các bước sau đây phù hợp với tôi:

  1. sudo apt-get install tk-dev.

xây dựng lại python: 1. Điều hướng đến thư mục python của bạn và chạy kiểm tra:

cd Python-3.7.7
sudo ./configure --enable-optimizations
  1. Xây dựng bằng lệnh make: sudo make -j 8 --- đây là 8 bộ xử lý, hãy kiểm tra bằng nproclệnh của bạn .
  2. Cài đặt bằng:

    sudo make altinstall
    

Không sử dụng sudo make install, nó sẽ ghi đè lên phiên bản 3.6.9 mặc định, có thể lộn xộn sau này.

  1. Kiểm tra tkinter ngay bây giờ
    python3.7 -m tkinter
    

Một hộp cửa sổ sẽ bật lên, tkinter của bạn đã sẵn sàng.


0

Sau rất nhiều nâng cấp các gói ( Spyder3-4, KerasTensorflowvà rất nhiều phụ thuộc của họ), tôi đã có cùng một vấn đề ngày hôm nay! Tôi không thể hiểu chuyện gì đã xảy ra; nhưng môi trường ảo (dựa trên căn hộ) tiếp tục sử dụng Spyder3 không có vấn đề. Mặc dù cài đặt tkinterhoặc thay đổi chương trình phụ trợ, via matplotlib.use('TkAgg)như được hiển thị ở trên, hoặc bài đăng hay này về cách thay đổi chương trình phụ trợ , có thể giải quyết tốt vấn đề, tôi không xem đây là các giải pháp cứng nhắc. Đối với tôi, gỡ cài đặt matplotlibvà cài đặt lại nó là một điều kỳ diệu và vấn đề đã được giải quyết.

pip uninstall matplotlib

... sau đó, cài đặt

pip install matplotlib

Từ tất cả những điều trên, đây có thể là một vấn đề quản lý gói và BTW, tôi sử dụng cả hai condapip, bất cứ khi nào khả thi.


0

Khi tôi gặp lỗi này trên Spyder, tôi đã thay đổi từ chạy từng dòng mã của mình sang đánh dấu khối mã âm mưu của mình và chạy tất cả cùng một lúc. Thì đấy, hình ảnh đã xuất hiện.


0

Tôi đã thêm % matplotlib nội tuyến và âm mưu của tôi hiển thị trong Máy tính xách tay Jupyter.


0

Nhận xét của @xicocaio nên được đánh dấu.

tkinter là phiên bản python cụ thể theo nghĩa sudo apt-get install python3-tksẽ cài đặt tkinter dành riêng cho phiên bản python mặc định của bạn. Giả sử bạn có các phiên bản python khác nhau trong các môi trường ảo khác nhau, bạn sẽ phải cài đặt tkinter cho phiên bản python mong muốn được sử dụng trong môi trường ảo đó. Ví dụ sudo apt-get install python3.7-tk,. Không làm điều này sẽ vẫn dẫn đến No module named ' tkinter'lỗi, ngay cả sau khi cài đặt nó cho phiên bản python toàn cầu.

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.