No puedo obtener la barra de color en gráficos como este para que tenga la misma altura que el gráfico, salvo el uso de Photoshop después del hecho. ¿Cómo consigo que coincidan las alturas?
python
image
matplotlib
Elliot
fuente
fuente

fractionoshrinkargs.Respuestas:
Puede hacerlo fácilmente con un matplotlib AxisDivider .
El ejemplo de la página vinculada también funciona sin usar subtramas:
fuente
plt.title, se mostrará intercambiado a la derecha. ¿Hay una manera de superar esto?Esta combinación (y valores cercanos a estos) parece funcionar "mágicamente" para mí para mantener la barra de colores ajustada a la trama, sin importar el tamaño de la pantalla.
Tampoco requiere compartir el eje que puede sacar la trama de forma cuadrada.
fuente
im_ratio = data.shape[0]/data.shape[1]plt.colorbar(im,fraction=0.046*im_ratio, pad=0.04)dóndedataestá su imagen.@bogatron ya dio la respuesta sugerida por los documentos matplotlib , que produce la altura correcta, pero presenta un problema diferente. Ahora, el ancho de la barra de colores (así como el espacio entre la barra de colores y el gráfico) cambia con el ancho del gráfico. En otras palabras, la relación de aspecto de la barra de colores ya no está fija.
Para obtener la altura correcta y una relación de aspecto dada, debes profundizar un poco más en el misterioso
axes_grid1módulo.Tenga en cuenta que esto especifica el ancho de la barra de colores y la altura del gráfico (en contraste con el ancho de la figura, como era antes).
El espacio entre la barra de colores y la gráfica ahora se puede especificar como una fracción del ancho de la barra de colores, que en mi humilde opinión es un número mucho más significativo que una fracción del ancho de la figura.
ACTUALIZAR:
He creado un cuaderno de IPython sobre el tema , en el que lleno el código anterior en función de un lugar fácilmente reutilizable:
Se puede usar así:
fuente
Agradezco todas las respuestas anteriores. Sin embargo, como señalaron algunas respuestas y comentarios, el
axes_grid1módulo no puede abordar GeoAxes, mientras que al ajustarfraction,pad,shrink, y otros parámetros similares puede no necesariamente dar la orden muy precisa, lo que realmente me molesta. Creo que dar elcolorbarsuyo propioaxespodría ser una mejor solución para abordar todos los problemas que se han mencionado.Código
Resultado
Más tarde, encuentro
matplotlib.pyplot.colorbarla documentación oficial también daaxopción, que son ejes existentes que proporcionarán espacio para la barra de colores. Por lo tanto, es útil para múltiples subtramas, vea a continuación.Código
Resultado
De nuevo, también puede lograr efectos similares especificando cax, una forma más precisa desde mi perspectiva.
Código
Resultado
fuente
Cuando creas el
colorbarintento, use los parámetros de fracción y / o reducción.De los documentos:
fuente
colorbar()función o método.Todas las soluciones anteriores son buenas, pero me gustan las mejores de @ Steve y @ bejota, ya que no implican llamadas elegantes y son universales.
Por universal quiero decir que funciona con cualquier tipo de ejes incluidos
GeoAxes. Por ejemplo, si ha proyectado ejes para el mapeo:una llamada a
fallará con:
KeyException: map_projectionPor lo tanto, la única forma universal de tratar el tamaño de la barra de colores con todos los tipos de ejes es:
Trabaja con una fracción de 0.035 a 0.046 para obtener tu mejor tamaño. Sin embargo, los valores para la fracción y el paddig deberán ajustarse para obtener el mejor ajuste para su gráfico y diferirán dependiendo de si la orientación de la barra de colores está en posición vertical u horizontal.
fuente
shrinkparámetros cuando,fractionjunto conpadno producir los resultados deseados lo suficiente.