当前位置: 首页 > 知识库问答 >
问题:

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

滕璞瑜
2023-03-14

我正在尝试使用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'

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

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

我还应该提到的是,我正在使用虚拟环境在Py魅力社区版IDE上运行所有这些,我的操作系统Linux /Ubuntu18.04。

我想知道如何解决这个问题,以便能够显示图形。

共有3个答案

韦衡
2023-03-14

如果您使用ArchLinux(像ManjaroAntegros这样的发行版),只需键入:

sudo pacman -S tk

一切都会完美地工作!

梁丘亦
2023-03-14

在我的例子中,错误消息暗示我在一个无头控制台中工作。所以plt。show()无法工作。起作用的是调用plt。保存图

import matplotlib.pyplot as plt

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

我在github存储库中找到了答案。

澹台鸿熙
2023-03-14

我找到了解决问题的办法(多亏了ImportanceOfBeingErnest的帮助)。

我所要做的就是通过Linuxbash终端使用以下命令安装tkinter

sudo apt-get install python3-tk

而不是使用pip或直接在Pycharm的虚拟环境中安装它。

  • 解决方案1工作正常,因为您有一个GUI后端。。。在这种情况下,TkAgg

注:

  • 通常,当您pip安装matplotlib并且尝试在GUI窗口中显示绘图,并且没有用于GUI显示的python模块时,会出现此错误
  • matplotlib的作者使pypi软件dep不依赖任何GUI后端,因为有些人需要没有任何GUI后端的matplotlib
 类似资料:
  • 我试图用pyplot绘制一个简单的图,例如: 但该图没有出现,我得到以下消息: 我在几个地方看到,必须使用以下方法更改matplotlib的配置: 我这样做了,但随后得到一个错误消息,因为它找不到模块: 然后,我尝试使用 (在虚拟环境中)安装“tkinter”,但它没有找到它: 我还应该提到,我正在使用虚拟环境在Pycharm Community Edition IDE上运行所有这些,并且我的操作

  • 我在 函数上遇到了问题。我在Linux上使用PyCharm,我有一个VirtualEnv。当我在 PyCharm 的内置终端(使用 venv)中执行文件 x.py 时,如下所示 Pythonx.py 一切正常,函数<code>plt。show()渲染并显示绘制的图形。我确实添加了来查看默认使用的后端,结果是GTK3Agg。 当我使用选项运行而不是终端时,问题就开始了。然后我收到一条错误消息 用户警

  • 我正在学习matplotlib,不知道如何保存图形而不在屏幕上打印。 所以我在网上做了一些研究,许多答案说解决方案是matplotlib.use(“Agg”)。而且必须在导入matplotlib.pyplot或pylab之前。 然后,当我在脚本的第一行添加它时,它根本不起作用。 我使用Anaconda Spyder,所以我重新启动了内核并再次运行了脚本,我得到了相同的错误信息。 然后我再次重启内核

  • 当我运行函数时,它显示: user warning:C:\ Users \ Administrator \ anaconda 3 \ lib \ site-packages \ matplotlib \ figure . py:397:user warning:matplotlib当前正在使用非GUI后端,因此无法显示该图

  • 下面的示例数据不是我正在使用的确切数据,它只是一个具有随机值的数据。 样本数据: 我想创建一个条形图,比较每个区域的x和y列。x和y的条形图应该并排显示。 我使用的代码 下面是我得到的输出。 期望输出: 请建议一些方法来获得所需的输出

  • 问题内容: 我正在为特定实验构建一类绘图工具。我目前有两种绘图方法,一种使用imshow()的静态绘图,一种也使用imshow()的“电影”格式。 这两种方法以及任何将来的方法都将获得与我可能编写的任何特定绘图方法相同的参数。使用plot类时,我在配置对象中具有所有这些参数。 我不想在每种绘图方法中都重写代码。我想初始化一个将设置以下args的对象(我认为是AxesImage):vmin,vmax