Posicionando la barra de colores

Tengo un gráfico de matplotlib con una barra de colores adjunta. Quiero colocar la barra de colores de modo que sea horizontal, y debajo de mi ttwig.

Casi he hecho esto a través de lo siguiente:

plt.colorbar(orientation="horizontal",fraction=0.07,anchor=(1.0,0.0)) 

Pero la barra de colores sigue superponiéndose ligeramente con la ttwig (y las tags del eje x). Quiero mover la barra de colores más abajo, pero no puedo averiguar cómo hacerlo.

La mejor manera de obtener un buen control sobre la posición de la barra de colores es darle su propio eje. Al igual que:

 # What I imagine your plotting looks like so far fig = plt.figure() ax1 = fig.add_subplot(111) ax1.plot(your_data) # Now adding the colorbar cbaxes = fig.add_axes([0.8, 0.1, 0.03, 0.8]) cb = plt.colorbar(ax1, cax = cbaxes) 

Los números entre los corchetes de add_axes se refieren a [izquierda, abajo, ancho, altura], donde las coordenadas son solo fracciones que van de 0 a 1 del área de trazado.

usando almohadilla de pad

Para mover la barra de colores con respecto a la ttwig secundaria, se puede usar el argumento de fig.colorbar para fig.colorbar .

 import matplotlib.pyplot as plt import numpy as np; np.random.seed(1) fig, ax = plt.subplots(figsize=(4,4)) im = ax.imshow(np.random.rand(11,16)) ax.set_xlabel("x label") fig.colorbar(im, orientation="horizontal", pad=0.2) plt.show() 

introduzca la descripción de la imagen aquí

usando un divisor de ejes

Se puede usar una instancia de make_axes_locatable para dividir los ejes y crear nuevos ejes que make_axes_locatable perfectamente alineados con el trazado de la imagen. Nuevamente, el argumento del pad permitiría establecer el espacio entre los dos ejes.

 import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable import numpy as np; np.random.seed(1) fig, ax = plt.subplots(figsize=(4,4)) im = ax.imshow(np.random.rand(11,16)) ax.set_xlabel("x label") divider = make_axes_locatable(ax) cax = divider.new_vertical(size="5%", pad=0.7, pack_start=True) fig.add_axes(cax) fig.colorbar(im, cax=cax, orientation="horizontal") plt.show() 

introduzca la descripción de la imagen aquí

usando subplots

Uno puede crear directamente dos filas de subplots, una para la imagen y otra para la barra de colores. Luego, al establecer height_ratios como gridspec_kw={"height_ratios":[1, 0.05]} en la creación de la figura, hace que una de las subplots sea mucho más pequeña en altura que la otra y esta pequeña subplot puede albergar la barra de colores.

 import matplotlib.pyplot as plt import numpy as np; np.random.seed(1) fig, (ax, cax) = plt.subplots(nrows=2,figsize=(4,4), gridspec_kw={"height_ratios":[1, 0.05]}) im = ax.imshow(np.random.rand(11,16)) ax.set_xlabel("x label") fig.colorbar(im, cax=cax, orientation="horizontal") plt.show() 

introduzca la descripción de la imagen aquí