Однако нет смысла добавлять цветовую шкалу на график ...
Мы наносим массив дважды, каждый раз заменяя некоторые столбцы на np.nan
, и это работает, потому что Matplotlib обычно не наносит чернила на график, когда встречается NaN.
In [40]: m=8
...: n=16
...: z=np.random.uniform(0,1,(m,n))
...: for i, cm in zip((0, 1), ('Blues', 'Reds')):
...: x = np.copy(z)
...: x[:,range(i, n, 2)] = np.nan
...: plt.imshow(x, cmap=cm)
...: plt.colorbar()
Вышеприведенное можно обобщить до n_cm
различных цветовых карт
def multi_imshow(image, cm_list, ax=None, **kwd):
nrows, ncols = image.shape
n_cm = len(cm_list)
for i, cm in enumerate(cm_list):
cols = range(i, ncols, n_cm)
x = np.full(image.shape, np.nan)
x[:,cols] = image[:,cols]
if ax:
ax.imshow( x, cmap=cm, **kwd)
else:
plt.imshow(x, cmap=cm, **kwd)
image = np.arange(16*21, dtype=float).reshape(16,21)
multi_imshow(image, ('Reds_r', 'Blues_r', 'Blues'))