Saltar al contenido principal

Gráfico circular en Python: Construye y estiliza con Pandas y Matplotlib

Aprende a construir y mejorar gráficos circulares utilizando las bibliotecas Matplotlib y Pandas de Python. Descubre ejemplos prácticos de código y consejos esenciales de diseño para crear visuales claros y legibles.
Actualizado 17 abr 2025  · 8 min de lectura

Los gráficos circulares son uno de los gráficos más populares para visualizar proporciones. Probablemente ya los conozcas, pero si no es así, imagínate una gran tarta, o un queso suizo redondo, cortado en rebanadas de distintos tamaños. 

Python ofrece múltiples formas de crear gráficos circulares. En este tutorial, nos centraremos en cómo crear gráficos circulares en Python utilizando Matplotlib y Pandas, dos de los paquetes de análisis de datos más populares en Python. Estructuraremos el artículo por métodos, para que puedas centrarte en el enfoque y la sintaxis que mejor se adapten a tu flujo de trabajo. 

Además de estos métodos, proporcionaremos algunos consejos para mejorar la, resolución de problemas, accesibilidad y usabilidad de los gráficos circulares. Por último, también consideraremos otras alternativas de gráficos que pueden ser más adecuadas que los gráficos circulares en determinados escenarios.

Formas de crear gráficos circulares en Python 

Te mostraré dos formas distintas de crear un gráfico circular en Python, y tú mismo podrás decidir qué método prefieres. Ambas son populares y buenas opciones, así que no puedes equivocarte. 

Método 1: Gráficos circulares con Matplotlib

Empecemos analizando cómo crear un gráfico circular con Matplotlib. 

Para esta sección, analizaremos datos sobre los diferentes cursos disponibles en el catálogo de cursos de DataCamp, que puedes encontrar aquí. (Busqué en el catálogo y conté el número de cursos disponibles en cada tecnología y creé una tabla con esta información).

Cómo crear el gráfico

Para crear nuestro primer gráfico circular con Matplotlib, podemos utilizar la función plt.pie(). También utilizaremos una segunda lista con los nombres de las tecnologías, que se incluirán en el gráfico mediante el parámetro labels . Como alternativa, podemos utilizar plt.legend() para añadir una leyenda independiente.

Como de costumbre, no olvides ejecutar el plt.show() al final de tu código para visualizar correctamente el gráfico Matplotlib.

import pandas as pd
import matplotlib.pyplot as plt

courses = [164, 127, 31, 31,12, 11]
labels = ['Python','R','SQL','Power BI','Excel','ChatGPT']
dictionary = {'courses':courses, 'labels':labels}
python_pie_chart_df = pd.DataFrame(dictionary)

plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels)
plt.show()

gráfico circular básico de Python con una leyenda

plt.pie(x = python_pie_chart_df.courses)
plt.legend(labels = python_pie_chart_df.labels, loc = [0.95,0.35])
plt.show()

gráfico circular básico de Python

Además, también podríamos incluir el porcentaje de cada cuña utilizando el parámetro autopct. En el ejemplo siguiente, incluimos el tamaño de las cuñas utilizando un decimal.

plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, autopct='%1.1f%%') 
plt.show()

Gráfico circular en Python con etiquetas

Cómo personalizar el gráfico

Los gráficos circulares en Matplotlib, así como las rebanadas que los componen, son altamente personalizables. Veamos algunas de las opciones que ofrece la función pie.plot()

Para cambiar el color de las rodajas, podemos utilizar el parámetro colors. Utilizaremos este parámetro para aplicar la paleta de colores de DataCamp a nuestro gráfico. 

datacamp_palette = ['#03ef62','#06bdfc','#ff6ea9','#ff931e','#ff5400','#7933ff']
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, colors = datacamp_palette, autopct='%1.1f%%')
plt.show()

Gráfico circular Python con paleta de colores personalizada

Queda mucho mejor, ¿verdad? Pero podemos hacer mucho más para personalizar nuestro gráfico circular. Por ejemplo, podemos jugar con la distancia de las etiquetas y los porcentajes, utilizando los parámetros labeldistance y pctdistance, respectivamente, y elegir un ángulo para iniciar el corte con el parámetro startangle.

plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, colors = datacamp_palette, autopct='%1.1f%%', 
pctdistance= 0.8, labeldistance=1.1, startangle=180)

plt.show()

Por último, imagina que estás haciendo una presentación y quieres centrarte en los cursos de R. Una forma práctica de resaltarlo es explotando esa cuña mediante el parámetro explode, como se indica a continuación:

explode = (0, 0.1, 0, 0, 0, 0)  # only "explode" the 2nd slice (i.e. 'R')

plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, 
        colors = datacamp_palette, autopct='%1.1f%%', 
        pctdistance= 0.8, labeldistance=1.1, 
        startangle=180, explode=explode)

plt.show()

Cómo guardar el gráfico

Después de crear tu gráfico circular, estás listo para compartirlo con tus colaboradores. Puedes hacerlo utilizando la función plt.savefig() , que toma el nombre del archivo como entrada a la función y te permite guardarlo en distintos formatos, como .png, .jpg, .svg o .pdf. Además, puedes utilizar dpi para cambiar la resolución de la imagen. 

Aquí tienes un ejemplo de cómo guardar tu gráfico circular en formato .jpg con 200 puntos por pulgada.

plt.pie(x = df.courses, labels = df.labels, 
        colors = datacamp_palette, autopct='%1.1f%%', 
        pctdistance= 0.8, labeldistance=1.1, 
        startangle=180, explode=explode)

plt.savefig('demo.jpg', dpi =200)

Puedes obtener más información sobre cómo guardar correctamente la visualización en nuestro curso Introducción a la visualización de datos con Matplotlib.

Método 2: Gráficos circulares con Pandas

Ahora que ya sabes cómo crear un gráfico circular con Matplotlib, veamos cómo funciona en Pandas.

Cómo crear el gráfico

Pandas tiene un método plot() que puede utilizarse para dibujar varios tipos de gráficos. Este método funciona tanto en los objetos DataFrame como Series de Pandas. El argumento kind del método plot() puede ayudarte a especificar el tipo de gráfico. En nuestro caso, puedes crear un gráfico circular utilizando kind ='pie'. También puedes añadir el parámetro labels para incluir un nombre en cada cuña y elparámetro autopct para añadir los porcentajes de cada cuña.

python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%')
plt.show()

Cómo personalizar el gráfico

El método plot() de Pandas proporciona una herramienta para trazar gráficos rápidamente, pero viene con opciones de personalización limitadas. Afortunadamente, el método utiliza Matplotlib como backend, lo que significa que puedes utilizar la sintaxis de Matplotlib fuera del método para personalizar tu visualización. A continuación, puedes encontrar un ejemplo de cómo combinar Pandas y Matplotlib.

ax= python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%', 
                       colors=datacamp_palette, figsize=(5,5))

ax.set_title('Pie Chart DatataCamp Courses')
ax.set_ylabel(None)

plt.show()

Cómo guardar el gráfico

Guardar gráficos circulares en Pandas es exactamente igual que en Matplotlib, ya que Pandas se basa en Matplotlib.

ax= python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%', 
                       colors=datacamp_palette, figsize=(5,5))

ax.set_title('Pie Chart DatataCamp Courses')
ax.set_ylabel(None)

plt.savefig('demo.png')

Solución de problemas con gráficos circulares

Para que tus gráficos circulares se muestren correctamente, debes proporcionar a Matplotlib los datos adecuados. Eso significa que siempre debes realizar técnicas de limpieza de datos en tu marco de datos, como eliminar los valores nulos con pd.dropna() y establecer los tipos de datos correctos para tus columnas de entrada.

Además, la personalización será clave para mostrar un gráfico circular atractivo e impactante. Sin embargo, ten en cuenta que si utilizas Pandas, es posible que no se admitan personalizaciones avanzadas como la explosión. Como ya se ha mencionado, si necesitas más control sobre tu gráfico circular, puede que tengas que añadir código Matplotlib a tus scripts.

Mejorar la accesibilidad y la usabilidad

Al mostrar tus gráficos circulares, debes ceñirte a las buenas prácticas.

  • Evalúa tu audiencia: Como regla de oro, siempre debes empatizar con el público al que se dirige tu visualización. Esto significa conocer bien el área de especialización, el nivel de conocimientos técnicos y los intereses de tu público. 
  • Despeja el desorden: Para evitar hacer visualizaciones ilegibles y desordenadas, pregúntate si lo que estás incluyendo es relevante para la audiencia, y elimina los elementos innecesarios tanto como puedas. En el caso de los gráficos circulares, debes evitar los efectos 3D o las sombras, ya que pueden dificultar la interpretación. 
  • Vigila los tipos de letra: Aunque puede ser tentador utilizar distintos tipos y tamaños de letra, como regla general, cíñete a un solo tipo de letra con no más de tres tamaños distintos. Debes seguir la jerarquía tipográfica y mantener los títulos más grandes que el cuerpo, así como utilizar un tipo de letra negrita para resaltar los elementos clave y los títulos. 
  • Utiliza los colores de forma creativa: El color es uno de los aspectos más llamativos de cualquier visualización de datos. Por ello, piensa mucho en la elección del esquema de colores de tu visualización de datos. Esto significa tener una paleta de colores coherente en todas tus visualizaciones y utilizar el color sistemáticamente para distinguir entre grupos, niveles de importancia y distintos tipos de jerarquía de la información.
  • Prueba en otros dispositivos: Siempre es un buen consejo probar tus visuales para ver cómo se ven en varios dispositivos.

La visualización de datos puede considerarse un arte. La intuición y el buen gusto pueden marcar la diferencia, pero siempre debes tener en cuenta la teoría que hay detrás. Para saber más sobre las mejores prácticas para una visualización eficaz de los datos, consulta nuestra Hoja de trucos sobre narración y comunicación de datos. Además, si trabajas con cuadros de mando, merece la pena leer este artículo sobre Buenas prácticas para diseñar cuadros de mando.

Alternativas a los gráficos circulares

A decir verdad, los gráficos circulares son de los más criticados. Está demostrado que los humanos no somos muy buenos interpretando ángulos. Podemos ilustrarlo con el gráfico circular que hemos utilizado antes. Considera las rodajas de Excel y ChatGPT. ¿Puedes decir a primera vista cuál tiene el mayor ángulo?

Podría decirse que no, y por eso muchos expertos en visualización de datos recomiendan utilizar otros gráficos para representar proporciones, sobre todo cuando se trata de muchas categorías, como los gráficos de barras y los gráficos de barras apiladas, los diagramas de árbol o incluso los gráficos de donuts. Puedes obtener más información sobre estas alternativas en nuestro artículo Tipos de gráficos de datos y cómo crearlos en Python.

Conclusión

Enhorabuena por haber llegado hasta el final del tutorial. Python es un lenguaje de programación muy versátil, que ofrece varias bibliotecas y enfoques para crear gráficos circulares. En este tutorial, analizamos cómo crear gráficos circulares con Matplotlib y Pandas. Ambos son igualmente adecuados para el trabajo y tienen notables similitudes. La idea no es elegir uno, sino utilizarlos indistintamente, según tus necesidades y flujo de trabajo. 

Si quieres saber más sobre gráficos circulares y, más ampliamente, sobre visualización de datos en Python, DataCamp está aquí para ayudarte. ¡Consulta nuestros materiales dedicados para convertirte y prepárate para convertirte en un mago de la visualización!


Javier Canales Luna's photo
Author
Javier Canales Luna
LinkedIn

Soy analista de datos autónomo y colaboro con empresas y organizaciones de todo el mundo en proyectos de ciencia de datos. También soy instructor de ciencia de datos con más de 2 años de experiencia. Escribo regularmente artículos relacionados con la ciencia de datos en inglés y español, algunos de los cuales se han publicado en sitios web consolidados como DataCamp, Towards Data Science y Analytics Vidhya Como científico de datos con formación en ciencias políticas y derecho, mi objetivo es trabajar en la interacción de las políticas públicas, el derecho y la tecnología, aprovechando el poder de las ideas para promover soluciones y narrativas innovadoras que puedan ayudarnos a abordar retos urgentes, como la crisis climática. Me considero autodidacta, aprendiz constante y firme partidaria de la multidisciplinariedad. Nunca es demasiado tarde para aprender cosas nuevas.

Preguntas frecuentes

¿Qué es un gráfico circular y cuándo debo utilizarlo?

Un gráfico circular es un tipo de gráfico en el que un círculo se divide en sectores que representan cada uno una proporción del total. Entonces es adecuado para representar proporciones.

¿Cómo puedo crear un gráfico circular en Matplotlib?

La forma más sencilla de crear un gráfico circular con Matplotlib es con la función plt.pie(), que viene con varios parámetros de personalización.

¿Cómo puedo crear un gráfico circular en Pandas?

La forma más sencilla de crear un gráfico circular con Matplotlib es con el método Series.plot.(kind=’pie’). Permite una visualización rápida en Pandas DataFrames, pero tiene opciones de personalización limitadas en comparación con Matplotlib.

¿Cuáles son las mejores prácticas a la hora de crear gráficos circulares?

Siempre debes seguir las mejores prácticas para crear tus visualizaciones. Eso incluye mantener tus gráficos circulares lo más sencillos posible, evitar elementos innecesarios, elegir paletas de colores intuitivas y adaptar el trazado a tu público.

¿Cuáles son las principales limitaciones de los gráficos circulares?

Los humanos no somos muy buenos interpretando ángulos, por eso muchos expertos en visualización recomiendan utilizar otros gráficos para visualizar proporciones, como los gráficos de barras.

Temas

Aprende con DataCamp

Curso

Understanding Data Science

2 hr
750.4K
An introduction to data science with no coding involved.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

Tutorial

Introducción al trazado con Matplotlib en Python

Este tutorial muestra cómo utilizar Matplotlib, una potente biblioteca de visualización de datos en Python, para crear gráficos de líneas, barras y dispersión con datos bursátiles.

Kevin Babitz

25 min

line plot python

Tutorial

Gráficos lineales en MatplotLib con Python

Este tutorial práctico profundiza en la creación y personalización de gráficos lineales con Matplotlib, una potente biblioteca de visualización de datos en Python.
Arunn Thevapalan's photo

Arunn Thevapalan

11 min

Tutorial

Tipos de gráficos de datos y cómo crearlos en Python

Explore varios tipos de gráficos de datos, desde los más comunes hasta los más avanzados y poco convencionales, qué muestran, cuándo utilizarlos, cuándo evitarlos y cómo crearlos y personalizarlos en Python.
Elena Kosourova's photo

Elena Kosourova

15 min

Tutorial

Gráfico lineal de series temporales Matplotlib

Este tutorial explora cómo crear y personalizar gráficos de líneas de series temporales en matplotlib.
Elena Kosourova's photo

Elena Kosourova

8 min

Tutorial

Histogramas en Matplotlib

Aprende sobre histogramas y cómo puedes utilizarlos para obtener información de los datos con la ayuda de matplotlib.
Aditya Sharma's photo

Aditya Sharma

8 min

Tutorial

Tutorial de Python Seaborn Line Plot: Crear visualizaciones de datos

Descubra cómo utilizar Seaborn, una popular biblioteca de visualización de datos de Python, para crear y personalizar gráficos de líneas en Python.
Elena Kosourova's photo

Elena Kosourova

12 min

Ver másVer más