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

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


当前回答

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

其他回答

可以在后端使用from agg to Tkinter TKAgg using命令更改matplotlib

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

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

当我在Spyder上遇到这个错误时,我从一行一行地运行我的代码,改为突出显示我的绘图代码块并一次性运行。瞧,图像出现了。

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

1: matplotlib。使用“tkaggs” 前 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()

运行 % matplotlib内联 曾经为我解决了这个问题。 我在这里找到了答案:当我在jupyter笔记本电脑中使用matplotlib时,它总是引发“matplotlib目前正在使用非gui后端”错误? 由用户Mulugeta Weldezgina

在导入时内联添加%matplotlib有助于平滑绘图 笔记本

%matplotlib inline
import matplotlib.pyplot as plt

%matplotlib inline将matplotlib后端设置为“内联” 后端: 有了这个后端,绘图命令的输出将内联显示 就像Jupyter笔记本一样,在代码的正下方 产生它的细胞。生成的图形也将存储在 笔记本文档。

我的问题开始后,我使用pandas_profile(或类似的东西),运行%matplotlib内联一次固定的背景从无头等。