调用pandas绘图时报'AxesSubplot'无rowNum属性错误如何解决?
报错原因
你遇到的AttributeError: 'AxesSubplot' object has no attribute 'rowNum'不是matplotlib本身的故障,是pandas旧版本与matplotlib 3.5及以上版本不兼容导致的。
matplotlib从3.5版本开始正式移除了AxesSubplot对象的rowNum、colNum属性,改为通过get_subplotspec()方法获取子图的行列索引,而你当前使用的pandas版本内部逻辑仍在调用已经被删除的rowNum属性,因此触发了报错。
解决办法
你可以根据自己的依赖情况选择任意一种方案修复:
- 方案1:升级pandas到适配版本
升级pandas到1.4.0及以上版本,该版本已经完成了和高版本matplotlib的兼容适配,执行命令:pip install --upgrade pandas - 方案2:修改plot参数绕过兼容逻辑
如果你暂时不想调整现有依赖版本,可以在调用df.plot()时添加sharex=False、sharey=False参数,绕过pandas内部处理共享坐标轴的逻辑,修改后的代码段如下:fig, axes = plt.subplots(nrows=2, ncols=2) df1 = pd.DataFrame(history.history) df1.plot(ax=axes[0,0], sharex=False, sharey=False) axes[0,0].set_title('model') - 方案3:回退matplotlib版本
如果你需要维持当前pandas版本不变,可以将matplotlib回退到3.4.x版本,执行命令:pip install matplotlib==3.4.3
内容的提问来源于stack exchange,提问作者user1393214
相关产品推荐
相关产品推荐

