Matplotlib matplotlib.pyplot 时卡顿或者一直卡在那里的问题

Matplotlib matplotlib.pyplot 时卡顿或者一直卡在那里的问题

背景

MatplotlibPython 下最流行的可视化库之一,它广泛用于数据可视化、科学计算、机器学习等领域,因为它提供了非常丰富的图形绘制功能。但是在有些情况下,我们在使用 Matplotlib 时可能会遇到 import matplotlib.pyplot 时卡顿或者一直卡在那里的问题,那么这个问题产生的原因是什么?又该如何避免和解决呢?下面将会详细阐述。

阅读更多:Matplotlib 教程

Matplotlib 简介

Matplotlib 是一个基于 Python 的绘图库,提供了一系列丰富的绘图工具,用户可以使用 Matplotlib 将数据可视化,帮助了解数据、发现数据的规律和问题,从而进行分析和处理。Matplotlib 支持多种图像类型,如线形图、柱状图、饼图、散点图、等高线图等,可以用于展示不同数据类型,并对数据进行比较和分析。

Matplotlib 可以通过以下方式进行安装:

pip install matplotlib
Python

问题现象

在使用 Matplotlib 绘图时,有时候会在 import matplotlib.pyplot 时遇到 hangs 的情况,具体表现为程序启动后卡在了这一步,没有后续的反应和输出,也没有错误提示。这种情况有时出现,有时不出现,很难进行 debug 和分析。

问题原因

造成这种 hangs 的问题可能有多种原因,以下是一些常见的原因:

1. 缺少依赖库

Matplotlib 依赖众多的第三方库进行图像绘制,如 PyQt5, Qt, sip 等。如果没有正确安装这些依赖库,就会出现 hangs 的问题。

这种情况下可以使用以下命令查看 Matplotlib 的依赖库是否缺失:

python -c "import matplotlib; print(matplotlib.get_backend())"
Python

如果输出的是 “TkAgg”,则说明 Matplotlib 不缺失依赖库;如果输出的是 “agg”,则说明 Matplotlib 缺失了类似 PyQt5, Qt, sip 等依赖库。

2. 缺少字体文件

Matplotlib 使用字体来渲染文字,如果缺少字体文件,就会出现 hangs 的问题。

查看是否缺少字体文件可以运行以下命令:

python -c "import matplotlib.pyplot as plt; plt.plot(); plt.show()"
Python

如果缺少字体文件,会返回提示信息 “UserWarning: Matplotlib is currently using a non-GUI backend, so cannot show the figure”,并且没有弹出绘图窗口。

3. 显示设备冲突

Matplotlib 使用系统默认显示设备渲染,如果出现了显示设备冲突,也会出现 hangs 的问题。

这种情况下可以使用以下命令验证是否存在显示设备冲突:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
Python

如果出现警告 “UserWarning: Matplotlib is currently using a non-GUI backend, so cannot show the figure”,则说明存在显示设备冲突。

解决方法

有了问题现象和可能的原因,我们就可以根据具体情况来采取相应的解决方法了。

1. 安装依赖库

在 Matplotlib 安装完成后,一般会自动安装相关依赖库,但是有时候在安装过程中可能会出现问题,或者用户手动卸载了一些依赖库而忘记重新安装。这时候需要手动安装相关依赖库,避免 hangs 的问题。

以 PyQt5 为例,可以使用以下命令安装:

pip install PyQt5
Python

2. 安装字体文件

Matplotlib 自带了一些字体文件,但是如果系统缺失一些字体文件,就需要手动安装。可以在系统自带的字体目录下找到需要的字体文件,然后将其复制到 Matplotlib 的字体目录下。

Matplotlib 的字体目录可以通过以下命令获取:

import matplotlib
print(matplotlib.matplotlib_fname())
Python

可以将需要的字体文件复制到这个目录下的 fonts/ttf 子目录中,然后重新尝试绘图,如果成功弹出了绘图窗口,则说明安装成功。

3. 更改显示设备

如果存在显示设备冲突,需要更改显示设备。可以在 Matplotlib 中设置使用的显示设备为 TkAgg,而不是默认的系统显示设备。

可以在代码开头添加以下几行:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
Python

这样可以确保 Matplotlib 使用正确的显示设备进行渲染,避免 hangs 的问题。

总结

Matplotlib 是 Python 中最流行的可视化库之一,但是在使用时可能会遇到 hangs 的问题,造成这种问题的原因包括缺失依赖库、缺失字体文件和显示设备冲突等。可以根据具体情况来采取相应的解决方法,如安装依赖库、安装字体文件或更改显示设备等。以此来避免 Matplotlib 的 hangs 问题,更好地使用 Matplotlib 绘制图形。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册