Python

Introducción a las gráficas de tarta en Matplotlib

Junto a las gráficas de barras, una de las mejores opciones para visualizar datos categóricos son las gráficas de tarta. Mediante las cuales se puede mostrar el peso que tienen cada una de las categorías en el total de los datos. En esta entrada se explicarán las bases para la creación de gráficas de tarta en Matplotlib y algunas de las opciones más interesantes.

Creación de una gráfica de tarta básica con Matplotlib

Para crear una gráfica de tarta es necesario contar con un conjunto de datos categóricos, por ejemplo, las ventas en función a alguna categoría. Con los datos solamente se debe importar Pyplot de Matplotlib y pasar los datos a la función plt.pie():

import matplotlib.pyplot as plt

# Datos para la gráfica
labels = ['Ventas A', 'Ventas B', 'Ventas C', 'Ventas D']
sizes = [25, 40, 20, 20]

# Crear gráfica de tarta básica
plt.pie(sizes, labels=labels)
plt.title("Gráfica de Tarta Básica")
plt.show()
Gráfica de tarta básica

Este código genera una gráfica de tarta básica con las etiquetas correspondientes. Para lo que se le han pasado dos parámetros a la función:

  • sizes: una lista o array que contiene los tamaños de cada porción en la tarta. Los valores son proporcionales entre sí, por lo que no es necesario normalizarlos para usarlos (no tiene que sumar 100 ni ninguna cantidad específica, la función se encarga de calcular las proporciones).
  • labels: parámetro opcional con el que se indica los nombres de cada categoría. Las etiquetas aparecerán alrededor de las porciones para identificarlas. Si el parámetro no se indica no se mostrará ninguna etiqueta en la gráfica.

Añadir valores y porcentajes a la gráfica

La gráfica da una información visual de las relaciones entre las diferentes categorías. Pero, en algunos casos, puede ser necesario incluir los valores numéricos exactos. Para esto se puede usar la propiedad autopct para calcular y mostrar los porcentajes en de cada una de las categorías. Esto es lo que se hace en el siguiente ejemplo:

plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title("Gráfica de Tarta con Porcentajes")
plt.show()
Porcentajes incluidos en la gráfica de tarta

El parámetro autopct permite agregar los porcentajes, y el formato '%1.1f%%' muestra los valores con un decimal.

Si lo que se desea es mostrar los datos en lugar del porcentaje es necesario pasar una función lambda al parámetro autopct en lugar del formato. Esto permite escribir cualquier valor en la gráfica. Por ejemplo, en la siguiente gráfica se puede ver como mostrar el valor de la categoría con el símbolo del Euro.

# Función personalizada para mostrar valores
def func(valor):
    return f'{valor:.0f}'  # Valor sin decimales

# Crear gráfica de tarta mostrando los valores
plt.pie(sizes, labels=labels, autopct=lambda p: func(p * sum(sizes) / 100))
plt.title("Gráfica de Tarta con Valores Numéricos")
plt.show()
Valores incluidos en la gráfica de tarta

La función personalizada func(valor) convierte en texto el valor numérico, debido a que pie() pasa como valor el porcentaje es necesario recuperar el dato original. Para lo que se suma los valores y se multiplican por el valor dividido por 100.

Cambiar los colores de las porciones

Matplotlib permite personalizar los colores usando el parámetro colors al que se le debe especificar una lista de colores para las porciones:

colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99']

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%')
plt.title("Gráfica de Tarta con Colores Personalizados")
plt.show()
Colores personalizados

Esta opción permite obtener un control total sobre el aspecto visual de la gráfica. Pudiendo adaptar este a las necesidades específicas de cada proyecto.

Añadir un efecto de explosión

Para resaltar una porción en particular, se puede recurrir al parámetro explode para “separar” una sección del resto:

explode = (0.1, 0, 0, 0)  # Solo explotar la primera porción

plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%')
plt.title("Gráfica de Tarta con Efecto de Explosión")
plt.show()
Separar una categoría con el efecto explosión

El parámetro explode es una tupla que define cuánto se separa cada porción. Cada valor de la tupla corresponde a una porción. En este caso, el valor 0.1 explota solo la primera porción (10% de distancia hacia fuera), mientras que las otras se mantienen sin explotar (0).

Convertir la gráfica de tarta en una de tipo donut

Una gráfica de donut (o anillos) es simplemente una gráfica de tarta con un agujero en el centro. Algo que se puede lograr ajustando el parámetro wedgeprops:

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', wedgeprops={'width': 0.3})
plt.title("Gráfica de Donut")
plt.show()
Gráfica de tipo donut

El parámetro wedgeprops recibe un diccionario con propiedades mediante las cuales se modifica el estilo de las porciones. En este caso, el valor {‘width': 0.3} reduce el ancho de cada porción a un 30% del total, creando el efecto de un donut o anillo al dejar un agujero en el centro.

Agregar una Leyenda

Finalmente, una gráfica de tarta puede beneficiarse de una leyenda que explique el valor de las porciones:

plt.pie(sizes, colors=colors)
plt.legend(labels, title="Categorías")
plt.title("Gráfica de Tarta con Leyenda")
plt.show()
Las categorías se muestren en la leyenda en lugar de la gráfica

En este caso se ha agregado la leyenda y eliminado las etiquetas para evitar redundancia.

Conclusiones

Las gráficas de tarta son una herramienta visual con la que se puede mostrar el peso de varias categorías en un conjunto de datos. Por lo que es uno de los gráficos básicos de Matplotlib. En esta entrada se ha visto cómo crear una gráfica de tarta básica, agregarle valores, configurar los colores, añadir un efecto explosión, convertida en una de tipo donut o anillo y agregar una leyenda.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Matplotlib

Recent Posts

Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito

En Analytics Lane seguimos evolucionando nuestras herramientas y damos un paso más con el lanzamiento…

3 días ago

DBSCAN y la selección de ε: teoría, intuición y aplicación práctica

Cuando hablamos de clustering, lo primero que viene a la mente suele ser k-means. Pero…

4 días ago

El bestiario de los indicadores económicos absurdos: El zoo patrio

Cualquier país desarrollado tiene sus propios indicadores folclóricos. España, por motivos que tienen mucho que…

1 semana ago

Por qué el banco te ofrece un 3% TAE y no es lo que parece

Entras a la web de tu banco. En la página principal, un banner llamativo: “Depósito…

2 semanas ago

Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.3, disponible…

2 semanas ago

This website uses cookies.