鸢尾花数据集绘图时plt.figure行报'tuple' object is not callable错误
报错原因
你的报错和鸢尾花数据集加载逻辑完全无关,问题出在Matplotlib运行环境:
- 你在当前代码运行前的操作中,意外将
plt.figure这个内置函数覆盖成了元组类型(比如之前写过plt.figure = (11,4)这类赋值语句),当你尝试调用plt.figure()时,Python会尝试执行元组的调用操作,因此触发'tuple' object is not callable报错。 - 注意如果没有事先导入
matplotlib.pyplot as plt会触发NameError而非你遇到的类型报错,因此可以排除导入遗漏的问题。
修复方案
- 方案1:直接重启当前Python运行环境(Jupyter内核、IDE运行终端均可),重置所有变量定义后重新运行代码即可恢复
- 方案2:不想重启环境的话,可以在当前代码的导入部分增加重载逻辑:
import matplotlib.pyplot as plt import importlib importlib.reload(plt)
完整可运行参考代码
from sklearn import datasets import matplotlib.pyplot as plt iris = datasets.load_iris(return_X_y=False) X = iris["data"][:,(2,3)] # 仅使用花瓣长度、花瓣宽度两个特征 y = iris["target"] plt.figure(figsize=(11,4)) # 绘制训练样本 plt.plot(X[:, 0][y==1], X[:, 1][y==1], "bs") # 变色鸢尾 plt.plot(X[:, 0][y == 2], X[:, 1][y==2], "yo") # 维吉尼亚鸢尾 plt.xlabel("花瓣长度") plt.ylabel("花瓣宽度") plt.show()
内容的提问来源于stack exchange,提问作者toasted_avocado
相关产品推荐
相关产品推荐

