欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python matplotlib plt.show() 不显示图像

程序员文章站 2024-01-19 14:46:40
...

自己使用matplotlib时经常发生plt.show()之后不显示图像的情况

首先注意matplotlib的版本 版本发生冲突时会出现 Procdacess finished with exit code (一大串数字) (0xC0000005)
本人使用 pip install matplotlib==2.2.4 安装的matplotlib 2.2.4。感觉这个版本比较稳定,不易引起版本冲突。

如果出现使用了 from matplotlib import pyplot as plt
plt.show()之后仍然不显示图像,直接出现Process finished with exit code 0,也不报错,那么就是backend有问题了。
网上说用
import pylab
pylab.show() 但我仍然看不到图片。

问题出在使用
import matplotlib
print(matplotlib.get_backend())
之后,得到 module://backend_interagg

本人通过修改matplot源码解决
ctrl+鼠标左键 点进get_backend()
发现源码如下

def get_backend():
    """Return the name of the current backend."""
    return rcParams['backend']

将 rcParams[‘backend’] 修改为 rc_params()[‘backend’]

def get_backend():
    """Return the name of the current backend."""
    return rc_params()['backend']

再次使用print(matplotlib.get_backend())得到应该是TkAgg,这是matplotlib默认使用的backend

另外一种解决办法

import matplotlib
matplotlib.use('Qt5Agg') 
from matplotlib import pyplot as plt

可行的backends有 [‘GTK’, ‘GTKAgg’, ‘GTKCairo’, ‘GTK3Agg’, ‘GTK3Cairo’,‘MacOSX’, ‘nbAgg’, ‘Qt4Agg’, ‘Qt4Cairo’, ‘Qt5Agg’, ‘Qt5Cairo’, ‘TkAgg’,‘TkCairo’, ‘WebAgg’, ‘WX’, ‘WXAgg’, ‘WXCairo’, ‘agg’, ‘cairo’, ‘gdk’,‘pdf’, ‘pgf’, ‘ps’, ‘svg’, ‘template’]

需要注意顺序,在 from matplotlib import pyplot as plt 上写 matplotlib.use(‘Qt5Agg’) 要不会报错。