"UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure." when plotting figure with pyplot on Pycharm

joh*_*987 34 python matplotlib pycharm

I am trying to plot a simple graph using pyplot, e.g.:

import matplotlib.pyplot as plt
plt.plot([1,2,3],[5,7,4])
plt.show()
Run Code Online (Sandbox Code Playgroud)

but the figure does not appear and I get the following message:

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
Run Code Online (Sandbox Code Playgroud)

I saw in several places that one had to change the configuration of matplotlib using the following:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

I did this, but then got an error message because it cannot find a module:

ModuleNotFoundError: No module named 'tkinter'
Run Code Online (Sandbox Code Playgroud)

Then, I tried to install "tkinter" using pip install tkinter (inside the virtual environment), but it does not find it:

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

I should also mention that I am running all this on Pycharm Community Edition IDE using a virtual environment, and that my operating system is Linux/Ubuntu 18.04.

I would like to know how I can solve this problem in order to be able to display the graph.

joh*_*987 46

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

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

sudo apt-get install python3-tk

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

  • 这个答案可能会提到“tkinter”是特定于 python 版本的,因为这个特定命令将为您的默认版本的 python 专门安装“tkinter”。假设您为各种虚拟环境安装了不同的 python 版本。在这种情况下,您必须为该工作 venv 中使用的所需 python 版本安装它。例如,在我的例子中:`sudo apt-get install python3.7-tk`。不知道这一点让我花了相当长的时间才得到没有模块名称“tkinter”错误,即使在为我的全局 python 版本安装它之后也是如此。 (13认同)
  • 为了完整起见,在 OpenSuse Leap 下我必须安装的软件包称为“python3-matplotlib-tk”。 (5认同)
  • 实际上,我还意识到,由于我安装了tkinter,所以不再需要添加代码的前两行(`import matplotlib`和`matplotlib.use('TkAgg')`) (4认同)
  • 或者如果你的 python 版本是 3.8,请使用 `sudo apt-get install python3.8-tk` (3认同)

dex*_*xed 35

如果您使用 Arch Linux(发行版如ManjaroAntegros),只需键入:

sudo pacman -S tk
Run Code Online (Sandbox Code Playgroud)

一切都会完美运行!

  • 我不敢说这已经是我第三次来到这里了。也许通过评论它,我下次再次尝试时更有可能记住这个“技巧”...... (3认同)
  • 来自 Manjero 和 XFCE。这对我有用。谢谢。 (2认同)

小智 30

我添加了%matplotlib inline ,我的情节出现在 Jupyter Notebook 中。


小智 22

安装简单

pip3 install PyQt5==5.9.2
Run Code Online (Sandbox Code Playgroud)

这个对我有用。

  • 我执行“pip3 install PyQt5”而不指定版本号。 (5认同)

小智 19

尝试import tkinter因为 pycharm 已经为您安装了 tkinter,我查看了Install tkinter for Python

你也许可以试试:

import tkinter
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('TkAgg')
plt.plot([1,2,3],[5,7,4])
plt.show()
Run Code Online (Sandbox Code Playgroud)

作为 tkinter 安装方式

你的方法我试过了,在我的电脑上运行似乎没有错误,它成功地显示了这个图。也许是因为 pycharm 有 tkinter 作为系统包,所以你不需要安装它。但是如果你在里面找不到tkinter,你可以去Tkdocs看看安装tkinter的方法,正如上面提到的,tkinter是python的核心包。

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

小智 11

我在 PyCharm 中也有这个问题。这个问题是因为您的机器中没有 tkinter 模块。

按照下面给出的步骤进行安装(选择合适的操作系统)

对于 ubuntu 用户

 sudo apt-get install python-tk
Run Code Online (Sandbox Code Playgroud)

或者

 sudo apt-get install python3-tk
Run Code Online (Sandbox Code Playgroud)

Centos 用户

 sudo yum install python-tkinter
Run Code Online (Sandbox Code Playgroud)

或者

 sudo yum install python3-tkinter
Run Code Online (Sandbox Code Playgroud)

对于 Arch 用户

  sudo pacman -S tk
Run Code Online (Sandbox Code Playgroud)

或者

  sudo pamac install tk
Run Code Online (Sandbox Code Playgroud)

对于 Windows,使用 pip 安装 tk

安装 tkinter 后重启你的 Pycharm 并运行你的代码,它会工作


Nob*_*ere 7

对于 Windows 10,如果使用pip install tk不适合您,请尝试:

  • 下载并运行适用于 Windows 的官方 python 安装程序。即使您已经下载了它,也请再次运行它。
  • 当(重新)安装 python 时,请确保选择“高级”选项,并将 复选框“tcl/tk 和 IDLE”设置为 true。
  • 如果您已经安装了 python,请选择“修改”选项,并确保选中该复选框。

我的修复来源: https ://stackoverflow.com/a/59970646/2506354


小智 6

这适用于 R 网状。在这里找到

1: matplotlib.use( 'tkagg' ) 或者 2: matplotlib$use( 'tkagg' )

例如:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style

import matplotlib
matplotlib.use( 'tkagg' )


style.use("ggplot")
from sklearn import svm

x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]

plt.scatter(x,y)
plt.show()
Run Code Online (Sandbox Code Playgroud)


pet*_*ief 6

答案已经给出了几次但不是很明显,需要安装图形,这个有效。

pip3 install PyQt5

我希望这可以节省一些时间。


vin*_*zee 5

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

import matplotlib.pyplot as plt

plt.plot([1,2,3],[5,7,4])
plt.savefig("mygraph.png")
Run Code Online (Sandbox Code Playgroud)

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


归档时间:

查看次数:

23639 次

最近记录:

5 年,9 月 前