使用brokenaxes绘制双断轴图时遇AttributeError错误求助
解决brokenaxes运行时的AttributeError及代码错误
问题根源
- 版本兼容性冲突:
AttributeError: 'SubplotSpec' object has no attribute 'is_last_row'是因为brokenaxes与当前matplotlib版本不匹配——较新的brokenaxes依赖matplotlib 3.4.0+新增的is_last_row属性,旧版matplotlib不支持该属性;反之,新版matplotlib也可能和旧版brokenaxes出现兼容问题。 - 代码变量错误:示例代码中定义了大写数组
X,但计算Y、Z时误用小写x,会触发NameError。
解决方案
1. 修复代码变量错误
将代码中Y = x**2、Z = x**3改为Y = X**2、Z = X**3,与定义的数组变量名保持一致。
2. 解决版本兼容问题
二选一即可:
- 升级matplotlib:执行命令升级到3.4.0及以上版本:
pip install --upgrade matplotlib - 降级brokenaxes:安装兼容旧版matplotlib的固定版本:
pip install brokenaxes==0.4.3
3. 修正后的完整代码
import matplotlib.pyplot as plt from brokenaxes import brokenaxes import numpy as np fig = plt.figure(figsize=(6,4)) baxes = brokenaxes(xlims=((-2,3),(5,8)), ylims=((0,8),(9.5,21)), hspace=.1) X = np.array([3,-1,0,4,5,-2,7]) Y = X**2 Z = X**3 baxes.plot(X,Y,label="squared") baxes.plot(X,Z,label="cubed") baxes.legend(loc="best") plt.show()
运行上述代码即可正常生成双截断轴的图像,无报错。
内容的提问来源于stack exchange,提问作者RM-
相关产品推荐
相关产品推荐

