ColorGrid在ImageGrid中缩放

时间:2019-06-04 08:11:08

标签: matplotlib colorbar

为什么我的颜色条上发生以下行为?如何使它表现为“正常”状态?

x_array = np.random.rand(5, 15, 10)
x_array = np.array([np.random.randint(1,20) * x for x in x_array])
minmax_array = [-2, 2]
f = plt.figure()
ag = axes_grid.ImageGrid(f, rect=(1, 1, 0), nrows_ncols=(1,5), cbar_mode='each',
                         cbar_pad=0.05, axes_pad=0.5)
for j in range(5):
    x_temp = x_array[j, :, :]
    im = ag[j].imshow(x_temp)
    ag.cbar_axes[j].colorbar(im)
    ag.cbar_axes[j].set_yticks(minmax_array)

其结果如下所示

enter image description here

如您所见,由于我提供的色条范围不在数组的值范围内。我得到了色条的怪异缩放比例。

但是为什么不能扩展

1 个答案:

答案 0 :(得分:0)

其原因是因为未在imshow中设置vmin和vmax。如果我们执行以下代码

x_array = np.random.rand(5, 15, 10)
x_array = np.array([np.random.randint(1,20) * x for x in x_array])
minmax_array = [-2, 2]
f = plt.figure()
ag = axes_grid.ImageGrid(f, rect=(1, 1, 0), nrows_ncols=(1,5), cbar_mode='each',
                         cbar_pad=0.05, axes_pad=0.5)
for j in range(5):
    x_temp = x_array[j, :, :]
    im = ag[j].imshow(x_temp, vmin=minmax_array)
    ag.cbar_axes[j].colorbar(im)
    ag.cbar_axes[j].set_yticks(minmax_array)

请注意,“如果vmin是length2序列,则将其解释为用于支持setp的(vmin,vmax)” enter image description here