Barra de color unificada para todos los subtrazados en matplotlib.
Estoy tratando de agregar una barra de color a mi gráfico, que contiene 4 subtramas. He agregado las subtramas manualmente usando este código:
extent = [-8, 37, 28, 46]
fig = plt.figure(figsize=(5.5, 3.5), constrained_layout= False)
spec = fig.add_gridspec(ncols=2, nrows=2)
ax0 = fig.add_subplot(spec[0, 0], projection=ccrs.PlateCarree(), frameon= False)
ax0.set_extent(extent)
ax1 = fig.add_subplot(spec[0, 0], projection=ccrs.PlateCarree(), frameon= False)
ax1.set_extent(extent)
He escrito estas líneas hasta ax3.
Ahora que intento hacer una barra de color usando plt.colorbar()
Agrega una barra de color solo a la última subtrama… He probado otras soluciones en línea, pero todas usan fig, axes= plt.subplots(...)
que no utilizo…
edición– esta pregunta https://stackoverflow.com/questions/13784201/how-to-have-one-colorbar-for-all-subplots no me ayuda realmente… cuando intento ejecutar este código
fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.85, 0.15, 0.05, 0.7])
fig.colorbar(ax3, cax=cbar_ax)
Recibo este error-
AttributeError: el objeto ‘GeoAxesSubplot’ no tiene el atributo ‘get_array’
Estoy usando Cartopy para hacer un hist2d de ocurrencias globales.
¿Alguien tiene alguna idea de cómo superar esto?
Gracias de antemano,
Karin.
davy.ai
Parece que el problema aquí radica en el hecho de que estás añadiendo manualmente tus subplots utilizando
fig.add_subplot()
en lugar de utilizar la funciónplt.subplots()
, la cual retorna una matriz de objetos de ejes que pueden ser fácilmente utilizados para añadir una barra de color a todos los subplots.Para solucionar esto, puedes crear una sola figura con los cuatro subplots utilizando
plt.subplots()
y luego recorrer cada subplot para graficar tus datos. Aquí tienes un ejemplo de código:En este ejemplo,
axes.flat
retorna un iterador 1D sobre los cuatro subplots, permitiéndote recorrer cada uno y graficar tus datos. Finalmente,fig.colorbar()
añade una barra de color a toda la figura que abarca todos los subplots.En cuanto al
AttributeError
específico que estás viendo, parece que podría deberse al hecho de que estás utilizando cartopy para crear tus gráficos. Es posible que necesites utilizar un método ligeramente diferente para crear la barra de color al usar cartopy. Aquí tienes un ejemplo de la documentación de cartopy:Aquí, se utiliza
cbar_ax.coastlines()
para añadir costas a la barra de color en la misma posición que los subplots, pero puedes ajustarlo según sea necesario.