Следующий код создает изображение, я хочу, но colourbar пустой/белый, и не соответствует данным:Пустой Colorbar с использованием basemap.pcolor в ImageGrid
def plot_array(da, ax=None, shift=True):
"""plots an array of lat by lon on a coastline map"""
m = basemap.Basemap()
m.drawcoastlines()
m.pcolormesh(da.lon, y=da.lat, data=da.T, latlon=True)
return m
# 'monthly mean' is an xarray DataArray
fig = plt.figure(0, (14, 8))
grid = ImageGrid(fig, 111, nrows_ncols=(3, 4), axes_pad=0.3,
cbar_mode='single', cbar_location="bottom",)
for i, m in enumerate(months):
plt.sca(grid[i])
plot_array(monthly_mean.sel(month=i + 1))
plt.title(m)
plt.suptitle("{b} - {y} monthly means".format(b=benchmark, y=year))
# plt.colorbar()
plt.tight_layout()
os.makedirs("plots/monthly_means/{y}".format(y=year), exist_ok=True)
plt.savefig("plots/monthly_means/{y}/{b}_{y}.png".format(b=benchmark, y=year))
plt.close()
Is есть что-то еще, что мне нужно сделать, чтобы заставить colorbar работать с ImageGrid, или ImageGrid и Basemap просто не хорошо сочетаются?
Когда я пытаюсь использовать 'plt.colorbar (cax = grid [0] .cax)', я получаю сообщение об ошибке: 'RuntimeError: Не найдено ни одного сопоставления для создания цветной панели. Сначала определите отображаемое изображение, например изображение (с imshow) или контурное множество (с контуром). ' и если я попробую' plt.colorbar (plt.gca(), cax = grid [0] .cax) ' Я получаю ошибку 'AttributeError: 'Объект CbarAxes' не имеет атрибута 'autoscale_None'' Наконец, если я попробую' plt.colorbar (сетка [0], cax = grid [0] .cax) 'Получаю ошибку 'AttributeError: объект LocatableAxes 'не имеет атрибута' autoscale_None' Любая идея, как исправить это? –
Используя ответ Serentiy ниже, исправляет эту проблему. –
@ user2472441 Возможно, что-то вроде. Это 'plt.colorbar (pcm)' добавляет новый экземпляр colorbar вместо замены уже установленного 'ImageGrid'. Исходный пустой номер все еще находится под новым - попробуйте установить «ориентация =» по вертикали «» в вызове colorbar, чтобы увидеть их оба. Если вы не замените оригинал, он может быть виден с некоторыми размерами фигур. – Deditos