Espaciado equitativo entre gráficos circulares de diferentes tamaños en matplotlib
Tengo dificultades para establecer un espacio igual entre gráficos circulares de diferentes tamaños. Los 5 están correctamente dispuestos en una fila, pero la distancia entre los contornos de gráficos vecinos no es igual. Probé muchas abreviaturas del siguiente código, todas ellas no hacen una gran diferencia en la salida (ver imagen):
código:
import matplotlib.pyplot as plt
import pandas as pd
labels = 'Verkehr', 'Maschinen und Motoren', 'Feuerungen', 'Industrie / Gewerbe', 'Land- und Forstwirtschaft'
sizesax1 = [108295, 10107, 7220, 11551, 7220]
sizesax2 = [77882, 6676, 6676, 13351, 6676]
sizesax3 = [55652, 4417, 6184, 15900, 6184]
sizesax4 = [36327, 2642, 4632, 16512, 5944]
sizesax5 = [18781, 1409, 3287, 1878, 4695]
fig, (ax1, ax2, ax3, ax4, ax5) = plt.subplots(1, 5, figsize =(20,4))
ax1.pie(sizesax1, startangle=0, colors = ('red', 'darkblue', 'orange', 'yellow', 'green'), radius=1*4)
ax2.pie(sizesax2, startangle=0, colors = ('red', 'darkblue', 'orange', 'yellow', 'green'), radius=.77*4)
ax3.pie(sizesax3, startangle=0, colors = ('red', 'darkblue', 'orange', 'yellow', 'green'), radius=.61*4)
ax4.pie(sizesax4, startangle=0, colors = ('red', 'darkblue', 'orange', 'yellow', 'green'), radius=.46*4)
ax5.pie(sizesax5, startangle=0, colors = ('red', 'darkblue', 'orange', 'yellow', 'green'), radius=.33*4)
algunas adiciones que intenté:
fig.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=1, hspace=None)
o
fig.tight_layout ()
#dándome este mensaje de error:
/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:17: UserWarning:
Tight layout not applied. The bottom and top margins cannot be made large enough to
accommodate all axes decorations.
y algunas más.
¡Muchas gracias por leer esto! Soy un principiante completo en Python y acabo de conseguir llegar tan lejos como se ve en esta imagen:
davy.ai
Una posible solución es ajustar las proporciones de ancho de los subgráficos utilizando el parámetro
gridspec_kw
de la funciónsubplots()
. Esto le permite especificar las proporciones relativas de las columnas en la cuadrícula de la figura, y puede ayudar a lograr un espaciado más equilibrado entre las gráficas circulares. Aquí hay un ejemplo:Observe cómo he especificado el parámetro
width_ratios
utilizando una lista de números; estos corresponden al ancho relativo de cada columna del subgráfico. Los ajusté manualmente para lograr un espaciado más equilibrado en este caso particular, pero es posible que necesite experimentar un poco para encontrar los valores correctos para sus gráficas circulares específicas.¡Espero que esto ayude! Por favor, avíseme si tiene más preguntas.