pycharm matplotlib.pyplot 绘图一闪而过解决办法

今天在写python作业的时候发现用python绘图使用show方法出现了一点问题,什么问题呢,

如题,绘制的窗口一闪而过,不留痕迹。

怎么解决,问百度而得之……

发现很多都是遇到不识别turtle的关键字,和我遇到的问题都不一样,(这就很麻烦
问题

然后浏览了一下觉得有些麻烦(主要是感觉解决不了我的问题

再然后,为了确保我的操作正确,我用了刘老师上课讲的例子,也就是↓
例子
在这之前别忘记导入库import matplotlib.pyplot as plt

这四行代码得到的图形应该是↓这个样子
得到
但是,这个只是老师上课使用得到的结果,而我在实验课上试了一下只能得到一道突然出现的窗口的残影5555,好卑微

所以怎么肥四


我查了点资料看了很多大佬的博客,也没找到官方原因,最赞的一篇但是和我前提有些不一样的博客里面是这样子写的(博客地址:https://www.cnblogs.com/maria-ld/p/8486442.html)

前提:
1.导入正确版本的matplotlib库
2.代码最后调用matplotlibku中pyplot.show()方法
3.无其他低级错误

解决步骤:
1.在导入pyplot之前.需要输入如下步骤:

扫描二维码关注公众号,回复: 9615298 查看本文章
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt

2.此时运行python程序,虽然不报错,但是并没有绘图界面弹出
  在命令行下面面输入如下命令:

import matplotlib
print(matplotlib.get_backend())

将得到的字符串结果替换mlp.use(‘Agg’)中Agg’即可
例如:我的print(matplotlib.get_backend())结果为TkAgg,替换后为:mpl.use('TkAgg')
3.显示正常
4.至于原因,个人能力有限,无法解释透彻


然后我原先的写的代码是没有报错的,那为什么闪退呢,我不得其解

于是,我真的是灵机一动想到老师说其实不定义figure和subplot对象也可以完成绘图,于是,我就这样试了一下。
简单粗暴

把最后一行的fig.show()换成plt.show()就得到了想要的图形

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(np.arange(10))
plt.show()

但是要注意:在已有若干subplot的情况下,对plt绘图将绘制在最后一次被操作的subplot上

没了问题暂时解决,不知道有没有朋友和我遇到情况一样的= =在线等一个更好的解决办法

发布了106 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44702847/article/details/103035926