从图中移除颜色条
我写了一段代码,用来创建一个栅格对象的png图片(self[:] = 一个np数组)。这个代码本来是一个方法,目的是为了方便绘制图表。
问题是,这段代码第一次运行的时候没问题,但当我多次运行这个方法时,生成的图片上会出现多个图例。
我试着用delaxes来解决这个问题,但这个图例真的很顽固。
如果有解决办法,欢迎分享。
以下是代码:
def plot(self,image_out,dpi=150, rotate = 60):
xur = self.xur()
xll = self.xll()
yur = self.yur()
yll = self.yll()
fig = plt.figure()
#tmp = range(len(fig.axes))
#tmp = tmp[::-1]
#for x in tmp:
# fig.delaxes(fig.axes[x])
ax = fig.add_subplot(111)
cax = ax.imshow(self[:],cmap='jet', extent = [yll,yur,xll,xur],
interpolation = 'nearest')
cbar = fig.colorbar()
plt.xticks(rotation=70)
plt.tight_layout(pad = 0.25)
plt.savefig(image_out,dpi=dpi)
return
4 个回答
0
你可以通过调用它的 .remove() 方法来去掉颜色条:
cbar = fig.colorbar()
...
cbar.remove()
1
我遇到了同样的问题,另一篇帖子里的答案帮我解决了这个问题。
请参考第二个答案。
我也遇到过类似的问题,试了试,找到两个可能更优雅的解决办法:
一种是清空整个图形,然后重新添加子图(如果需要的话也可以加上颜色条)。
如果颜色条总是存在,你可以简单地更新坐标轴,使用自动缩放,这样也会更新颜色条。
我用这个方法试过imshow,但我想其他绘图方法也差不多。
特别是,我使用了第一种方法,就是通过 clf()
清空图形,然后每次重新添加坐标轴。
1
一个更好的选择是告诉colorbar你希望它显示在哪些坐标轴上,具体可以参考这个例子 这里。
3
你需要关闭这个图。我也遇到过同样的问题
在 plt.savefig 之后,添加 plt.close()。