首先,我认为您在坐标轴(基本上是绘图),图形,标量可映射对象(在这种情况下为图像)和色条实例之间有点困惑。
的
figure是,该地块是在窗口中。这是顶级容器。
每个数字通常具有一个或多个
axes。这些是地块/子图。
彩条也在图中。添加颜色条会为要显示的颜色条创建一个新轴(除非您另行指定)。(通常无法在与图像相同的轴上显示它,因为颜色条需要有自己的x和y限制,等等。)
您之所以有些困惑,是因为您混用了状态机接口和OO接口。这样做很好,但是您需要了解OO接口。
fig.axes[1]不是colorbar实例。它是绘制颜色条的轴。(也是,图中
fig.axes[1]的第二条轴。它恰好是具有一个子图和一个颜色条的图形中的颜色条所在的轴,但通常不会案子。)
如果要更新颜色条,则需要保留
colorbar返回的颜色条实例。
以下是您通常如何处理事情的示例:
import matplotlib.pyplot as pltimport numpy as npdata = np.random.random((10,10)) # Generate some random data to plotfig, ax = plt.subplots() # Create a figure with a single axes.im = ax.imshow(data) # Display the image datacbar = fig.colorbar(im) # Add a colorbar to the figure based on the image
如果你要使用
update_normal更新彩条,预计一
ScalarMappable(通过创建例如图像
imshow,该集合
scatter创建时,
ContourSet即
contour创建等)以进行传递。(还有其他的方法来做到这一点,以及。通常,您只想更新限制,而不是整个限制。)对于上述代码,您可以致电
cbar.update_normal(im)。
但是,您尚未创建新的
AxesImage,只是更改了它的数据。因此,您可能只想做:
cbar.set_clim(newimg.min(), newimg.max())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)