Gráficos de pastel anidados con Matplotlib

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Los gráficos de pastel son herramientas populares de visualización de datos que se utilizan para representar datos en forma circular. Sin embargo, hay ocasiones en las que es posible que desees crear una versión anidada del gráfico de pastel, conocida como gráfico de dona. En este tutorial, te guiaré a través de la creación de gráficos de pastel anidados utilizando Matplotlib, una popular biblioteca de visualización de datos en Python.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haz clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tengas que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y te resolveremos el problema inmediatamente.

Importar las bibliotecas necesarias

En primer lugar, necesitamos importar las bibliotecas necesarias. En este caso, necesitamos Matplotlib y numpy.

import matplotlib.pyplot as plt
import numpy as np

Crear un gráfico de pastel anidado utilizando ax.pie

Podemos crear un gráfico de pastel anidado utilizando el método ax.pie. Primero generaremos algunos datos falsos, correspondientes a tres grupos. En el círculo interior, consideraremos cada número como perteneciente a su propio grupo. En el círculo exterior, los graficaremos como miembros de sus 3 grupos originales.

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.set(aspect="equal", title='Pie plot with `ax.pie`')
plt.show()

Crear un gráfico de pastel anidado utilizando ax.bar

También podemos crear un gráfico de pastel anidado utilizando el método ax.bar en ejes con un sistema de coordenadas polares. Esto puede brindar más flexibilidad en el diseño exacto de la gráfica.

fig, ax = plt.subplots(subplot_kw=dict(projection="polar"))

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
## Normalize vals to 2 pi
valsnorm = vals/np.sum(vals)*2*np.pi
## Obtain the ordinates of the bar edges
valsleft = np.cumsum(np.append(0, valsnorm.flatten()[:-1])).reshape(vals.shape)

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.bar(x=valsleft[:, 0],
       width=valsnorm.sum(axis=1), bottom=1-size, height=size,
       color=outer_colors, edgecolor='w', linewidth=1, align="edge")

ax.bar(x=valsleft.flatten(),
       width=valsnorm.flatten(), bottom=1-2*size, height=size,
       color=inner_colors, edgecolor='w', linewidth=1, align="edge")

ax.set(title="Pie plot with `ax.bar` and polar coordinates")
ax.set_axis_off()
plt.show()

Personalizar el gráfico de pastel anidado

Podemos personalizar el gráfico de pastel anidado cambiando los colores, agregando etiquetas y ajustando el tamaño.

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

## Add labels
labels = ['Group 1', 'Group 2', 'Group 3']
ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'), labels=labels, labeldistance=0.7)

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

## Set the title
ax.set(aspect="equal", title='Nested Pie Chart')

plt.show()

Guardar el gráfico de pastel anidado

Podemos guardar el gráfico de pastel anidado como una imagen en formato png, pdf o svg.

fig.savefig('nested_pie_chart.png', dpi=300, bbox_inches='tight')

Resumen

En este tutorial, hemos aprendido cómo crear gráficos de pastel anidados en Matplotlib utilizando dos métodos: ax.pie y ax.bar. También hemos aprendido cómo personalizar el gráfico de pastel anidado agregando etiquetas, cambiando los colores y ajustando el tamaño. Finalmente, hemos visto cómo guardar el gráfico de pastel anidado como una imagen en formatos png, pdf o svg.