使用Matplotlib setp隐藏坐标轴脊柱报错,求正确语法
解决Matplotlib中setp设置脊柱可见性的AttributeError问题
嗨,我明白你遇到的麻烦了——用plt.setp批量设置脊柱可见性时触发了AttributeError,这是因为你对axes.spines的类型理解有点小偏差哦!
问题根源
axes.spines其实是一个字典,它的键是'top'、'bottom'、'left'、'right'这些字符串。当你直接把这个字典传给plt.setp时,函数会默认迭代字典的键(也就是那些字符串),而字符串对象根本没有update方法,自然就报错啦。
plt.setp需要的是可迭代的Matplotlib艺术家对象(比如Spine实例),而不是字符串键。
正确用法
你需要把字典里的脊柱对象取出来,也就是调用axes.spines.values(),它会返回所有Spine对象的可迭代序列,这样plt.setp就能正确识别并批量修改属性了。
修改后的最小可复现代码如下:
import matplotlib.pyplot as plt x = range(0,10) y = [i*i for i in x] plt.plot(x,y) #Plotting x against y axes = plt.gca() #Getting the current axis axes.spines['top'].set_visible(False) #单个设置没问题 plt.setp(axes.spines.values(), visible=False) # 这里改成values()就OK啦 plt.show() #Showing the plot
额外小技巧
如果你只想批量设置部分脊柱(比如只隐藏顶部和右侧),也可以这样写:
plt.setp([axes.spines['top'], axes.spines['right']], visible=False)
直接把要修改的Spine对象放进列表里传给setp就行,灵活度更高~
内容的提问来源于stack exchange,提问作者loved.by.Jesus
相关产品推荐
相关产品推荐

