📜  : UserWarning: Matplotlib 当前正在使用模块:matplotlib_inline.backend_inline,这是一个非 GUI 后端, - Python (1)

📅  最后修改于: 2023-12-03 14:59:01.781000             🧑  作者: Mango

Matplotlib 使用模块警告

当使用 Matplotlib 绘制图形时,可能会遇到以下警告信息:

UserWarning: Matplotlib is currently using module: matplotlib_inline.backend_inline, 
which is a non-GUI backend, so cannot show the figure.

这个警告信息表示 Matplotlib 正在使用一个非 GUI 后端(backend_inline),因此绘制的图形无法在界面上显示。

什么是 Matplotlib 的后端?

Matplotlib 是一个 Python 的绘图库,它支持多种后端,可以用来在不同的环境中绘制图形,包括:

  • TkAgg:使用 Tkinter 库绘制图形,可以在 Tkinter 应用程序中使用。
  • Qt4Agg:使用 Qt4 库绘制图形,可以在 Qt4 应用程序中使用。
  • WXAgg:使用 wxWidgets 库绘制图形,可以在 wxWidgets 应用程序中使用。
  • Agg:使用 antigrain geometry 渲染器绘制图形,可以生成 PNG 和 PDF 格式的图像。
  • Cairo:使用 Cairo 渲染器绘制图形,可以生成 PNG 和 PDF 格式的图像。
  • ...
怎样设置 Matplotlib 后端?

在 Matplotlib 中,后端由环境变量 MPLBACKEND 来控制。在 Python 中,可以通过以下代码片段来设置 Matplotlib 后端:

import matplotlib

matplotlib.use("<backend>")

其中 <backend> 替换成你要使用的后端名称,例如:

  • 后端 TkAgg:matplotlib.use('TkAgg')
  • 后端 WXAgg:matplotlib.use('WXAgg')
  • 后端 Qt5Agg:matplotlib.use('Qt5Agg')
怎样避免后端警告?

如果你不需要在 Python 代码中显示图形,可以使用 Agg 后端,这样就不会出现后端警告了。在 Python 中,可以通过以下代码来使用 Agg 后端:

import matplotlib
matplotlib.use("Agg")

如果你需要在 Python 代码中显示图形,可以考虑将 matplotlib.pyplot.show() 函数移到代码的最后,这样就可以在最后一步才绘制图形并显示。但需要注意的是,在使用 Agg 后端时,无法在程序运行时显示图形,只能将图像保存到文件中并手动打开。如果需要在程序运行时显示图形,可以考虑使用其他后端,如 TkAggWXAggQt5Agg 等。

总结

Matplotlib 使用的后端会影响到图形的显示方式和输出格式。如果不需要在 Python 代码中显示图形,可以使用 Agg 后端,否则需要根据实际情况选择合适的后端,并将 matplotlib.pyplot.show() 函数移到代码的最后。