Matplotlib barra de colores en cada subplot

Me gustaría agregar una barra de colores por separado a cada subplot en una gráfica de 2×2.

fig , ( (ax1,ax2) , (ax3,ax4)) = plt.subplots(2, 2,sharex = True,sharey=True) z1_plot = ax1.scatter(x,y,c = z1,vmin=0.0,vmax=0.4) plt.colorbar(z1_plot,cax=ax1) z2_plot = ax2.scatter(x,y,c = z2,vmin=0.0,vmax=40) plt.colorbar(z1_plot,cax=ax2) z3_plot = ax3.scatter(x,y,c = z3,vmin=0.0,vmax=894) plt.colorbar(z1_plot,cax=ax3) z4_plot = ax4.scatter(x,y,c = z4,vmin=0.0,vmax=234324) plt.colorbar(z1_plot,cax=ax4) plt.show() 

Pensé que así es como lo haces, pero la ttwig resultante está realmente desordenada; solo tiene un fondo gris e ignora los comandos set_xlim, set_ylim que tengo (no se muestra aquí por simplicidad). + No muestra barras de color. ¿Esta es la manera correcta de hacerlo?

¡También intenté deshacerme de “cax = …”, pero luego la barra de colores va en la parte inferior derecha y no en cada plot separada!

Por favor, eche un vistazo a esta página de ejemplo matplotlib . Allí se muestra cómo obtener la siguiente gráfica con cuatro barras de colores individuales para cada subplot: introduzca la descripción de la imagen aquí

Espero que esto ayude.
También puede echar un vistazo aquí , donde puede encontrar mucho de lo que puede hacer con matplotlib .

Esto se puede resolver fácilmente con la utilidad make_axes_locatable . Proporciono un ejemplo mínimo que muestra cómo funciona esto y debería ser fácilmente adaptable:

barra a cada imagen

 import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable import numpy as np m1 = np.random.rand(3, 3) m2 = np.arange(0, 3*3, 1).reshape((3, 3)) fig = plt.figure(figsize=(16, 12)) ax1 = fig.add_subplot(121) im1 = ax1.imshow(m1, interpolation='None') divider = make_axes_locatable(ax1) cax = divider.append_axes('right', size='5%', pad=0.05) fig.colorbar(im1, cax=cax, orientation='vertical') ax2 = fig.add_subplot(122) im2 = ax2.imshow(m2, interpolation='None') divider = make_axes_locatable(ax2) cax = divider.append_axes('right', size='5%', pad=0.05) fig.colorbar(im2, cax=cax, orientation='vertical'); 

En plt.colorbar(z1_plot,cax=ax1) , use ax= lugar de cax= , es decir, plt.colorbar(z1_plot,ax=ax1)

Especifique el argumento ax para matplotlib.pyplot.colorbar() , por ejemplo

 import numpy as np import matplotlib.pyplot as plt fig,ax = plt.subplots(2,2) for i in range(2) : for j in range(2) : data = np.array([[i,j],[i+0.5,j+0.5]]) im = ax[i,j].imshow(data) plt.colorbar(im,ax=ax[i,j]) plt.show() 

introduzca la descripción de la imagen aquí