我试图用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

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

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


当前回答

对我有效的解决方案是:

安装tkinter 将tkinter导入模块 确保matplotlib使用(TkAgg)而不是(Agg) matplotlib.use(“TkAgg”)

其他回答

如果你使用Arch Linux(发行版如Manjaro或Antegros),只需输入:

sudo pacman -S tk

一切都将完美地工作!

在我的例子中,错误消息暗示我正在无头控制台中工作。因此,plt.show()不能工作。有效的方法是调用plt.savefig:

import matplotlib.pyplot as plt

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

我在github上找到了答案。

解决方案1:安装GUI后端tk

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

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

sudo apt-get install python3-tk

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

解决方案2:安装任何matplotlib支持的GUI后端

解决方案1工作得很好,因为你得到了一个GUI后端…在这种情况下是TkAgg 但是你也可以通过安装任何matplolib GUI后端来解决这个问题,比如Qt5Agg, GTKAgg, Qt4Agg等 例如,PIP安装pyqt5也将解决这个问题

注意:

通常,当你安装matplotlib并且你试图在GUI窗口中显示一个图形,而你没有用于GUI显示的python模块时,会出现这个错误。 matplotlib的作者使pypi软件deps不依赖于任何GUI后端,因为有些人需要matplotlib而不需要任何GUI后端。

我添加了%matplotlib内联 我的情节出现在朱庇特笔记本上。

我在Ubuntu 20.04上使用WSL2安装了python3-tk

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.use( 'tkagg')

然后我从Windows商店安装了GWSL,这似乎解决了WSL2渲染的问题