“用户警告:Matplotlib当前正在使用agg,它是非GUI后端,因此无法显示该图。” 在Pycharm上用pyplot绘制图时


124

我正在尝试使用pyplot绘制一个简单的图形,例如:

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

但该图未出现,并且我收到以下消息:

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

我在几个地方看到必须使用以下命令更改matplotlib的配置:

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

我这样做了,但是却收到一条错误消息,因为它找不到模块:

ModuleNotFoundError: No module named 'tkinter'

然后,我尝试使用安装“ tkinter” pip install tkinter(在虚拟环境中),但找不到它:

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

我还应该提到,我正在使用虚拟环境在Pycharm Community Edition IDE上运行所有这些程序,并且我的操作系统是Linux / Ubuntu 18.04。

我想知道如何解决此问题才能显示图形。


7
暂时忘记图表。您的问题是安装tkinter。您是否尝试过任何可用的解决方案,例如stackoverflow.com/questions/4783810/install-tkinter-for-python
ImportanceOfBeingErnest

3
您实际上是在将tkinter用于任何用途,还是只是将其用作plt后端?
G.安德森

1
@ImportanceOfBeingErnest:谢谢您的提示。我确实会首先专注于安装tkinter。我将看一下您提供的链接,看看是否可以用它做任何事情。
johnwolf1987 '19

1
@ G.Anderson:在使用matplotlib遇到此错误之前,我不知道tkinter是什么。现在,我试图安装它只是为了能够显示图形(所以,是的,我想我只是将其作为plt后端选择了)。如果您知道其他任何方式(即不使用tkinter),我将很高兴听到。
johnwolf1987 '19

2
@ G.Anderson:我运行了脚本来循环浏览不同的后端。原来只有TkAgg可用!确实,我在测试脚本之前就已经安装了它。
johnwolf1987 '19

Answers:


190

我找到了解决问题的方法(借助于ImportanceOfBeingErnest的帮助)。

我要做的就是tkinter使用以下命令通过Linux bash终端安装:

sudo apt-get install python3-tk

而不是将其安装pip在Pycharm的虚拟环境中或直接安装在虚拟环境中。


7
实际上,我还意识到,由于我安装了tkinter,因此不再需要再添加代码的前两行(import matplotlibmatplotlib.use('TkAgg')
johnwolf1987

为了完整起见,在OpenSuse Leap下,我必须安装的软件包称为python3-matplotlib-tk
Eldrad

5
从这个tkinter意义上来说,此命令可能会特定于python版本,因为该特定命令将tkinter专门为您的默认python版本安装。假设您为各种虚拟环境安装了不同的python版本。在这种情况下,您将必须为该工作venv中使用的所需python版本安装它。例如,在我的情况下:sudo apt-get install python3.7-tk。不知道这让我付出了相当长的时间,即使在为我的全局python版本安装了模块名称“ tkinter”之后,也没有出现模块名称“ tkinter”错误。
xicocaio

为了运行此命令,我必须在PC上安装Linux Bash Terminal。而且有效!见howtogeek.com/249966/...
arame3333

38

就我而言,该错误消息表示我在无头控制台中工作。因此plt.show()无法正常工作。起作用的是plt.savefig

import matplotlib.pyplot as plt

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

我在github仓库上找到了答案。


16

如果您使用Arch Linux(分布类似ManjaroAntegros),只需键入:

sudo pacman -S tk

所有都将完美运行!


1
谢谢。在寻找那个。
logicOnAbstractions

7

尝试一下,import tkinter因为pycharm已经为您安装了tkinter,所以我看了为Python安装tkinter

您可以尝试:

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

作为tkinter的安装方式

我已经尝试过,在计算机上运行似乎没有错误,它成功显示了该图。也许是因为pycharm将tkinter作为系统软件包,所以您不需要安装它。但是,如果您在内部找不到tkinter,则可以去Tkdocs看看安装tkinter的方法,正如它所提到的,tkinter是python的核心软件包。


谢谢你的建议。不幸的是,它不起作用(ModuleNotFoundError: No module named 'tkinter')。我将尝试以其他方式安装tkinter。
johnwolf1987 '19

6

我在PyCharm中也遇到了这个问题。此问题是因为您的计算机中没有tkinter模块。

要安装,请遵循以下步骤(选择合适的操作系统)

对于ubuntu用户

 sudo apt-get install python-tk

要么

 sudo apt-get install python3-tk

对于Centos用户

 sudo yum install python-tkinter

要么

 sudo yum install python3-tkinter

对于Windows,请使用pip安装tk

安装tkinter后,重新启动Pycharm并运行您的代码,它将起作用





0

以防万一这对任何人都有帮助。

Python版本:3.7.7平台:Ubuntu 18.04.4 LTS

这带有默认的python 3.6.9版本,但是我已经在上面安装了自己的3.7.7版本python(已从源代码安装了它)

即使当 help('module')列表中显示了tkinter,。

以下步骤对我有用:

  1. sudo apt-get install tk-dev.

重建python:1.导航到您的python文件夹并运行检查:

cd Python-3.7.7
sudo ./configure --enable-optimizations
  1. 使用make命令进行构建: sudo make -j 8 ---这是8个处理器的数量,请使用nproc命令。
  2. 使用以下方式安装:

    sudo make altinstall
    

不要使用sudo make install,它将覆盖默认的3.6.9版本,以后可能会很混乱。

  1. 立即检查tkinter
    python3.7 -m tkinter
    

将弹出一个窗口框,您的Tkinter现在已准备就绪。


0

在升级了很多软件包(Spyder3到4,Keras以及Tensorflow很多依赖)之后,我今天遇到了同样的问题!我不知道发生了什么事。但是继续使用Spyder3的(基于conda的)虚拟环境没有问题。尽管如上所示安装tkinter或更改了后端,via matplotlib.use('TkAgg)或者这篇有关如何更改后端的不错的帖子 可能很好地解决了问题,但我不认为这些是严格的解决方案。对我来说,卸载matplotlib并重新安装它是不可思议的,问题已解决。

pip uninstall matplotlib

...然后,安装

pip install matplotlib

综上所述,这可能是一个程序包管理问题,顺便说一句,在可行的情况下,我会同时使用condapip


0

当我在Spyder上遇到此错误时,我从逐行运行代码变为突出显示绘图代码块并立即运行所有代码。瞧,图像出现了。


0

内联添加了%matplotlib, 并且我的情节出现在Jupyter Notebook中。


0

@xicocaio的评论应突出显示。

从某种意义上说,tkinter是特定于python版本的,sudo apt-get install python3-tk它将专门为您的默认python版本安装tkinter。假设您在各种虚拟环境中具有不同的python版本,则必须为该虚拟环境中使用的所需python版本安装tkinter。例如,sudo apt-get install python3.7-tkNo module named ' tkinter'即使不为全局python版本安装它,这样做仍然会导致错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.