Gráfico circular de Matplotlib - Tutorial y ejemplos

En este tutorial, veremos cómo trazar un gráfico circular en Python con Matplotlib. Cubriremos cómo trazar gráficos simples, así como también cómo personalizarlos, con ejemplos.

Introducción

Hay muchas bibliotecas de visualización de datos en Python, pero Matplotlib es la biblioteca más popular de todas. La popularidad de Matplotlib se debe a su confiabilidad y utilidad: es capaz de crear gráficos simples y complejos con poco código. También puede personalizar las tramas de varias maneras.

En este tutorial, cubriremos cómo trazar un gráfico circular en Matplotlib.

Los gráficos circulares representan datos desglosados ​​en categorías/etiquetas. Son una forma intuitiva y sencilla de visualizar datos proporcionales, como porcentajes.

Trace un gráfico circular en Matplotlib

Para trazar un gráfico circular en Matplotlib, podemos llamar a la función pie() de la instancia PyPlot o Axes.

El único argumento obligatorio son los datos que nos gustaría trazar, como una característica de un conjunto de datos:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt

x = [15, 25, 25, 30, 5]

fig, ax = plt.subplots()
ax.plot(x)
plt.show()

Esto genera un gráfico circular bastante simple, pero sencillo, en el que cada valor se asigna a una porción proporcionalmente grande del gráfico circular:

simple matplotlib pie chart

Agreguemos algunas etiquetas, para que sea más fácil distinguir qué es qué aquí:

1
2
3
4
5
6
7
8
9
import matplotlib.pyplot as plt

x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']

fig, ax = plt.subplots()
ax.pie(x, labels = labels)
ax.set_title('Survery responses')
plt.show()

Ahora, el gráfico circular tendrá algunos datos adicionales que nos permitirán interpretarlo un poco más fácilmente:

pie chart with labels matplotlib

Personalización de gráficos circulares en Matplotlib

Al preparar visualizaciones de datos para presentaciones, documentos o simplemente para compartirlos con sus compañeros, es posible que desee estilizarlos y personalizarlos un poco, como usar diferentes colores, que se correlacionen con las categorías, mostrar porcentajes en sectores, en lugar de solo confiando en la percepción visual, o explotando cortes para resaltarlos.

Echemos un vistazo a cómo Matplotlib nos permite personalizar los gráficos circulares.

Cambiar los colores del gráfico circular

Para cambiar los colores de un gráfico circular en Matplotlib, necesitaremos proporcionar una matriz de colores al argumento colors, mientras lo trazamos:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import matplotlib.pyplot as plt

x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']

fig, ax = plt.subplots()
ax.pie(x, labels = labels, colors = colors)
ax.set_title('Survery responses')
plt.show()

Aquí, hemos creado una correlación realmente simple entre las respuestas y los colores que se les asignan. “Muy probable” será “azul” en la paleta de Tableau, mientras que “Muy poco probable” será “rojo”.

Ejecutar este código da como resultado:

changing colors of matplotlib pie chart

Mostrar porcentajes en sectores

Mirando el gráfico circular que hemos hecho hasta ahora, está claro que hay más encuestados “No seguros” y “Probables” que otras categorías individualmente. Sin embargo, a menudo es más fácil para nosotros ambos interpretar un gráfico circular visual y numéricamente.

Para agregar porcentajes numéricos a cada rebanada, usamos el argumento autopct. Establece automáticamente los porcentajes en cada cuña/rebanada y acepta la notación de formato de cadena estándar de Python:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import matplotlib.pyplot as plt

x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']

fig, ax = plt.subplots()
ax.pie(x, labels = labels, colors = colors, autopct='%.0f%%')
ax.set_title('Survery responses')
plt.show()

Al establecer autopct en %.0f%%, hemos optado por formatear los porcentajes con 0 decimales (solo números enteros) y agregamos un signo % al final. Si hubiéramos omitido los símbolos %..% circundantes, las cadenas no se formatearían como porcentajes, sino como valores literales.

Ejecutar este código da como resultado:

adding percentage labels to pie chart in matplotlib

Explotar/Resaltar Cuñas

A veces, es importante resaltar ciertas entradas. Por ejemplo, en nuestra encuesta, un porcentaje realmente pequeño de los encuestados siente que el advenimiento de algo en cuestión es “Muy improbable”. Suponiendo que querríamos señalar el hecho de que la mayoría de la gente no cree que sea improbable, podemos explotar la cuña:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import matplotlib.pyplot as plt

x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']
explode = [0, 0, 0, 0, 0.2]

fig, ax = plt.subplots()
ax.pie(x, labels = labels, colors = colors, autopct='%.0f%%', explode = explode)
ax.set_title('Survery responses')
plt.show()

El argumento explotar acepta una matriz de valores, desde 0..1, donde los valores en sí mismos definen qué tan lejos está la cuña del centro. De forma predeterminada, todas las cuñas tienen un valor de explosión de 0, por lo que están todas conectadas al centro.

Establecer este valor en 1 lo compensaría mucho, en relación con el gráfico, por lo que, por lo general, explotará las cuñas en 0.1, 0.2, 0.3 y valores similares. Puedes explotar tantos como quieras, con diferentes valores para resaltar diferentes categorías.

Ejecutar este código da como resultado:

highlighting pie chart wedges with explode in matplotlib

Adición de una sombra

Para agregar una sombra a un gráfico circular de Matplotlib, todo lo que tiene que hacer es establecer el argumento “sombra” en “Verdadero”:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import matplotlib.pyplot as plt

x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']
explode = [0, 0, 0, 0, 0.2]

fig, ax = plt.subplots()
ax.pie(x, labels = labels, 
          colors = colors, 
          autopct='%.0f%%', 
          explode = explode, 
          shadow = True)
          
ax.set_title('Survery responses')
plt.show()

Esto resulta en:

adding a shadow to a pie chart in matplotlib

Gráfico circular giratorio

Finalmente, también puede rotar el gráfico, configurando el ángulo de inicio. Hasta ahora, comienza en 0 grados (a la derecha) y las cuñas se llenan en el sentido contrario a las agujas del reloj. Al establecer el argumento startangle en un número entre 0..360, puede hacer un círculo completo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import matplotlib.pyplot as plt

x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']
explode = [0, 0, 0, 0, 0.2]

fig, ax = plt.subplots()
ax.pie(x, labels = labels,
          colors = colors,
          autopct='%.0f%%',
          explode = explode,
          shadow = True,
          startangle = 180)

ax.set_title('Survery responses')
plt.show()

Esto da como resultado un gráfico circular, girado 180 grados, volteándolo efectivamente hacia el otro lado:

rotating pie charts in matplotlib

Conclusión

En este tutorial, hemos repasado cómo trazar un gráfico circular simple en Matplotlib con Python. Hemos repasado gráficos circulares simples y luego nos hemos sumergido en cómo personalizarlos tanto para usos estéticos como prácticos.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.