Matplotlib 如何消除警告

Matplotlib 如何消除警告

当我们在使用Matplotlib绘图时,有时会出现警告信息。例如,当我们使用plot()函数绘制图形时,如果未指定图形样式,则会出现警告:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure。然而,有时候我们希望将这些警告信息消除掉,以便更好地了解绘图结果。那么,Matplotlib如何消除警告呢?

阅读更多:Matplotlib 教程

消除警告的方法

消除Matplotlib警告的方法很简单,只需要添加一行代码即可。例如,当我们需要绘制一幅图像时,我们可以这样写:

import matplotlib.pyplot as plt

plt.plot([1,2,3],[4,5,6])
plt.show()

运行以上代码,我们可以得到一幅图像,但同时也会出现警告信息:

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure

为了消除这个警告信息,我们只需要添加以下代码即可:

import matplotlib.pyplot as plt
import warnings

warnings.filterwarnings("ignore")

plt.plot([1,2,3],[4,5,6])
plt.show()

运行以上代码,我们可以得到同样的图像,但是不再有警告信息输出。上述代码中,warnings.filterwarnings("ignore")这一行即为消除警告信息的代码。

需要注意的是,消除警告信息并不总是明智的选择。有时候警告信息反而可以帮助我们更好地解决问题。因此,在消除警告信息时需要斟酌。

示例说明

下面通过几个示例来说明如何消除Matplotlib的警告信息。

示例一:消除绘制中文时出现的警告信息

有时候我们在绘制图像时需要使用中文,但是当我们使用中文时会出现警告信息:

MatplotlibDeprecationWarning: 
The text.latex.unicode rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later.

这是因为Matplotlib的文本渲染引擎不支持中文字符。为了消除这个警告信息,我们可以使用以下代码:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import warnings

warnings.filterwarnings("ignore")

font_path = "/System/Library/Fonts/STHeiti Light.ttc"
prop = fm.FontProperties(fname=font_path)

plt.plot([1,2,3],[4,5,6])
plt.title("中文标题", fontproperties=prop)
plt.xlabel("横坐标", fontproperties=prop)
plt.ylabel("纵坐标", fontproperties=prop)
plt.show()

在上述代码中,我们使用了matplotlib.font_manager模块来指定中文字体。通过这种方式,我们可以在绘制图像时使用中文,同时消除警告信息。

示例二:消除Matplotlib版本更新时出现的警告信息

当我们使用的Matplotlib版本比当前最新版本要旧时,有时候会出现版本更新警告信息:

MatplotlibDeprecationWarning: 
Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.

这是因为在新版Matplotlib中,添加新的axes实例需要指定唯一的标签(label)参数,以避免名称冲突。为了消除这个警告信息,我们可以使用以下代码:

import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import warnings

warnings.filterwarnings("ignore")

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
ax.set_xlabel('横坐标')
ax.set_ylabel('纵坐标')

with cbook.get_standard_colors() as colors:
    for j, color in enumerate(colors):
        ax.plot([j, j + 1], [j, j + 1], c=color)

plt.show()

在新版Matplotlib中,我们需要在创建新的axes实例时指定唯一的标签参数。因此,为了消除警告信息,我们需要在代码中添加label="xxx"这样的参数。

总结

本文介绍了Matplotlib如何消除警告信息。在代码编写中,警告信息既有时候可以帮助我们更好地解决问题,也有时候只是干扰我们浏览结果。因此,在消除警告信息时,我们需要斟酌。希望本文对你有所帮助!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程