Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

886
Vistas
Subparcelas de mapas de calor de Seaborn: mantener constante la proporción de ejes

Si tengo el siguiente código:

 import seaborn import matplotlib.pyplot as plt flights = sns.load_dataset("flights") flights = flights.pivot("month", "year", "passengers") f,(ax1,ax2,ax3) = plt.subplots(1,3,sharey=True) g1 = sns.heatmap(flights,cmap="YlGnBu",cbar=False,ax=ax1) g1.set_ylabel('') g1.set_xlabel('') g2 = sns.heatmap(flights,cmap="YlGnBu",cbar=False,ax=ax2) g2.set_ylabel('') g2.set_xlabel('') g3 = sns.heatmap(flights,cmap="YlGnBu",ax=ax3) g3.set_ylabel('') g3.set_xlabel('')

Que genera lo siguiente: ingrese la descripción de la imagen aquí

¿Cómo puedo ajustar las subparcelas para que el eje g3 tenga el mismo ancho que el eje g1, g2? Dado que no he agregado la barra de color a los dos primeros ejes, Seaborn reduce el tercer eje para que toda la figura sea consistente. Esto es comprensible.

Quiero esto:

ingrese la descripción de la imagen aquí

¿Quizás necesito hacer una trama secundaria de 4 paneles con el cuarto panel que solo contiene la barra de colores?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

De hecho, un camino a seguir es crear 4 ejes, donde el cuarto eje contendrá la barra de colores. Puede usar el argumento cbar_ax para decirle al mapa de calor en qué ejes trazar la barra de colores. Para crear los ejes con algunas buenas proporciones, puede usar el argumento gridspec_kw para subplots . Entonces, el problema es que los ejes compartirían la escala y con la barra de colores, por lo que debemos desactivar sharey y compartir manualmente los primeros tres ejes usando ax1.get_shared_y_axes().join(ax2,ax3) . Esto, a su vez, creará etiquetas de eje no deseadas, que deben desactivarse.

 import seaborn as sns import matplotlib.pyplot as plt flights = sns.load_dataset("flights") flights = flights.pivot("month", "year", "passengers") f,(ax1,ax2,ax3, axcb) = plt.subplots(1,4, gridspec_kw={'width_ratios':[1,1,1,0.08]}) ax1.get_shared_y_axes().join(ax2,ax3) g1 = sns.heatmap(flights,cmap="YlGnBu",cbar=False,ax=ax1) g1.set_ylabel('') g1.set_xlabel('') g2 = sns.heatmap(flights,cmap="YlGnBu",cbar=False,ax=ax2) g2.set_ylabel('') g2.set_xlabel('') g2.set_yticks([]) g3 = sns.heatmap(flights,cmap="YlGnBu",ax=ax3, cbar_ax=axcb) g3.set_ylabel('') g3.set_xlabel('') g3.set_yticks([]) # may be needed to rotate the ticklabels correctly: for ax in [g1,g2,g3]: tl = ax.get_xticklabels() ax.set_xticklabels(tl, rotation=90) tly = ax.get_yticklabels() ax.set_yticklabels(tly, rotation=0) plt.show()

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda