【Python报错-01】解决matplotlib在Pycharm中运行报错:vars()参数必须有__dict__属性

1 运行错误

(1)程序的原代码如下图所示:

import matplotlib.pyplot as plt  # 是可视化绘图工具
……   #省略了计算SSE的代码
plt.plot(range(1, 11), SSE)
plt.xlabel("聚类数k", fontsize=12)
plt.ylabel("误差平方和SSE", fontsize=12)
plt.show()
plt.savefig("k-SSE关系对应曲线.png")

(2)一运行plt.plot(range(1, 11), SSE)就进入到pyplot .py模块的331行,然后继续运行后,出现报错。错误提示如下:
【Python报错-01】解决matplotlib在Pycharm中运行报错:vars()参数必须有__dict__属性_第1张图片(3)分析错误提示:
看错误提示的最后一行:TypeError:vars() argument must have dict attribute。
TypeError:vars() 参数必须要有__dict__属性
看完最后一行,再从最后往上看,可知是pyplot .py模块的331行有问题。

2 解决办法

(1)首先查看python解释器里面matplotlib的版本(在PyCharm的settings( File->settings->project:当前项目名->Project Interpreter),PyCharm中的版本已经和Anaconda同步了,版本没有问题。
【Python报错-01】解决matplotlib在Pycharm中运行报错:vars()参数必须有__dict__属性_第2张图片
(2)如果您像运行默认脚本一样运行代码(或者在PyCharm交互式控制台中),而不是在Jupyter中运行代码,就可能会出现这个问题。可以通过直接在py文件中设置后端use函数来修复这个错误,如下
【Python报错-01】解决matplotlib在Pycharm中运行报错:vars()参数必须有__dict__属性_第3张图片

import matplotlib.pyplot as plt  # 是可视化绘图工具
import matplotlib as mpl
import matplotlib.pyplot as plt  # 是可视化绘图工具
……   #省略了计算SSE的代码
plt.plot(range(1, 11), SSE)
plt.xlabel("聚类数k", fontsize=12)
plt.ylabel("误差平方和SSE", fontsize=12)
plt.show()
plt.savefig("k-SSE关系对应曲线.png")

参考文章

[1]matplotlib Pandas图,vars()参数必须有__dict__属性?

你可能感兴趣的:(#,python中的报错处理,python,matplotlib,pycharm)