在PyCharm中,使用seaborn或matplotlib模块,运行代码时,绘图窗口一闪而过,并且程序一直运行,没有结束的问题如何解决。

今天,我在学习seaborn模块时,老师,让我们做一个有关绘制lmplot回归图的案例,以下是我的代码:

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df=pd.read_csv('tips.csv')#读取csv文件
print(df.head())#head()读取前n行数据,若不传入数值,默认读取前五行数据。
sns.lmplot(x='total_bill',y='tip',data=df)#data是用来接收数据来源的参数
plt.show()#图像显示

正当我兴致勃勃的运行代码时,结果发现,我的pycharm运行很慢,等了几秒后返回除了df.head()结果,又过了一两秒,我的电脑屏幕上突然弹出一个窗口,然后又以迅雷不及掩耳之势关闭了,好家伙,这一波操作,直接给我看傻了,我愣了一会后,又发现程序没有弹出那标志性的结束语句:“进程已结束,退出代码0”,这说明我的代码还没有结束,还在继续运行,但是在我的屏幕除了pycharm的工作区外,再也没有任何的运行结果,于是,我猜测还有程序在后端继续运行,于是,我打开了【任务管理器】,不看不知道,一看吓一跳,在我的后台,果然,有一个【python】的解释器正在运行,但是此时却不消耗CPU,是0%的,这说明,此时python解释器已经无影响了。于是,我有反反复复看了很多遍代码,又将代码放到sublime text3中去运行,图像正常显示,又将代码放到Jupyter中运行,运行结果也很正常。之后,我百分之百确认了自己的代码没有任何语法错误。于是,我上网,搜索答案,想要解决这个问题,结果,看了很长时间,也没有一个与我问题相关的博文,正当我,走投无路的时候,想要用sublime text3或者Jupyter写有关seaborn代码时。

我突然突发奇想,灵机一动。想到另一种解决方法,我在想,我可不可以用一个后端值去解决我的问题,但是我突然忘了可以指定哪些后端值,于是我,将计就计,直接写了错误代码,让pycharm报错,这个报错信息可能会包括我应该传入哪些后端值,于是我写了以下代码

import seaborn as sns
import pandas as pd
import matplotlib as mpl
mpl.use('pltgg')#加入后端值,TKAgg,就可以解决运行时,窗口一闪而过的结果。
import matplotlib.pyplot as plt
import numpy as np
sns.set()
df=pd.read_csv('tips.csv')
print(df.head())
sns.lmplot(x='total_bill',y='tip',data=df)
plt.show()

运行之后,果然报错了,报错信息如下:

ValueError: 'pltagg' is not a valid value for backend; supported values are ['GTK3Agg', 'GTK3Cairo', 'GTK4Agg', 'GTK4Cairo', 'MacOSX', 'nbAgg', 'QtAgg', 'QtCairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']

看到报错信息,我心中暗喜,果然返回给我有关后端值的报错信息。那么,应该传入那个呢?

应该传入‘TKAgg’这个后端值,不要问为什么,因为,我一个个试出来的,哈哈

那么,一定要注意!!!!!!!!!!!!!!!

        matplotlib.use('TKAgg')必须在本句执行import matplotlib.pyplot as plt前运行

故,正确的代码如下:

import seaborn as sns
import pandas as pd
import matplotlib as mpl
mpl.use('TKAgg')#加入后端值,TKAgg,就可以解决运行时,窗口一闪而过的结果。
import matplotlib.pyplot as plt
import numpy as np
sns.set()
df=pd.read_csv('tips.csv')
print(df.head())
sns.lmplot(x='total_bill',y='tip',data=df)
plt.show()

看到这,如果你还不明白为什么要加入后端值,那就请您记住,matplotlib.use('TKAgg')的用法就是正常显示绘图的,当然,如果,您在学习matplotlib和seaborn中,不加这个用法也能正常运行,您也可以不需要加,这个方法只是当您不能正常显示时使用的。

如果您觉得这个方法帮助到您了,请您在评论区跑评论一个“问题已解决,感谢!”,最后感谢您的阅读,希望为你解决一些麻烦,祝您生活愉快!!!

物联沃分享整理
物联沃-IOTWORD物联网 » 在PyCharm中,使用seaborn或matplotlib模块,运行代码时,绘图窗口一闪而过,并且程序一直运行,没有结束的问题如何解决。

发表评论