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

新手上路,请多包涵

我正在尝试使用 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 社区版 IDE 上运行所有这些,并且我的操作系统是 Linux/Ubuntu 18.04。

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

原文由 johnwolf1987 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 5.3k
2 个回答

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

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

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

 sudo apt-get install python3-tk

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

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

  • 解决方案 1 工作正常,因为您获得了 GUI 后端……在这种情况下, TkAgg
  • 但是,您也可以通过安装任何 matplolib GUI 后端来解决此问题,例如 Qt5AggGTKAggQt4Agg
    • 例如 pip install pyqt5 也会解决这个问题

笔记:

  • 通常当您 pip install matplotlib 并且您尝试在 GUI 窗口中显示绘图并且您没有用于 GUI 显示的 python 模块时会出现此错误。
  • matplotlib 的作者使pypi软件部门不依赖任何GUI后端,因为有些人 需要 matplotlib 没有任何GUI后端。

原文由 johnwolf1987 发布,翻译遵循 CC BY-SA 4.0 许可协议

就我而言,错误消息暗示我在无头控制台中工作。所以 plt.show() 无法工作。起作用的是调用 plt.savefig

 import matplotlib.pyplot as plt

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

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

原文由 vvvvv 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题