Gráficos Circulares con Matplotlib

MatplotlibBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a crear y personalizar gráficos circulares (pie charts) utilizando Matplotlib, una de las bibliotecas de visualización de datos más populares en Python. Un gráfico circular es un gráfico estadístico circular que se divide en porciones para ilustrar la proporción numérica.

Comenzará preparando los datos, luego trazará un gráfico circular básico y progresivamente agregará características como un efecto de "explosión" (explode), etiquetas de porcentaje y una sombra para hacer el gráfico más informativo y visualmente atractivo.

Todas las operaciones se realizarán dentro del LabEx WebIDE. Escribirá código Python en un archivo y lo ejecutará para generar imágenes de los gráficos. Dado que la visualización gráfica no está disponible en este entorno, utilizará plt.savefig() para guardar sus gráficos como archivos de imagen y luego verlos directamente en el IDE.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 94%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Preparar listas de etiquetas y tamaños

En este paso, preparará los datos necesarios para trazar un gráfico circular. Un gráfico circular necesita dos conjuntos principales de datos: las etiquetas para cada porción y el tamaño o valor correspondiente de cada porción.

Primero, creemos un script de Python. En el explorador de archivos del WebIDE a la izquierda, verá un archivo llamado main.py dentro del directorio project. Haga doble clic en él para abrirlo en el editor.

Ahora, agregue el siguiente código a main.py. Este código define dos listas de Python: labels para las categorías y sizes para sus respectivas proporciones.

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
  • labels: Una lista de cadenas de texto que se utilizarán para etiquetar cada porción del gráfico circular.
  • sizes: Una lista de números que representan el valor o la proporción de cada porción. La suma de estos valores representará el pastel completo.

Después de agregar el código, su archivo main.py debería verse así. Este script aún no produce ninguna salida, pero configura los datos necesarios para los siguientes pasos.

Trazar gráfico circular usando plt.pie(sizes, labels=labels)

En este paso, utilizará los datos del paso anterior para trazar un gráfico circular básico. Usaremos la función plt.pie() de la biblioteca Matplotlib.

Primero, necesita importar el módulo matplotlib.pyplot, que convencionalmente se importa con el alias plt. Luego, puede llamar a la función plt.pie(), pasando sus listas sizes y labels como argumentos.

Dado que no podemos mostrar una ventana de interfaz gráfica de usuario (GUI) en este entorno, guardaremos el gráfico en un archivo de imagen usando plt.savefig().

Actualice su archivo main.py con el siguiente código:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart
ax.pie(sizes, labels=labels)

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart.png')

print("Pie chart saved to pie_chart.png")

Ahora, ejecutemos el script. Abra una terminal en el WebIDE (puede usar el icono + en el panel de terminal o el menú Terminal > New Terminal) y ejecute el siguiente comando:

python3 main.py

Debería ver la siguiente salida en la terminal:

Pie chart saved to pie_chart.png

Aparecerá un nuevo archivo llamado pie_chart.png en su directorio project. Haga doble clic en pie_chart.png en el explorador de archivos para abrirlo y ver su primer gráfico circular.

Pie chart

Añadir efecto de explosión usando el parámetro explode

En este paso, aprenderá cómo enfatizar una porción particular del gráfico circular "explotándola". Esto significa separarla ligeramente del centro del gráfico. Esto se logra usando el parámetro explode en la función pie().

El parámetro explode toma una tupla o lista de la misma longitud que sus datos sizes. Cada valor en la tupla especifica la fracción del radio con la que se separará cada sector. Un valor de 0 significa que la porción permanece en su lugar, mientras que un valor distinto de cero como 0.1 la moverá hacia afuera.

Modifiquemos main.py para explotar la porción de 'Hogs'. También guardaremos la salida en un nuevo archivo, pie_chart_explode.png, para compararlo con el anterior.

Actualice su archivo main.py con el siguiente código:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart with explode effect
ax.pie(sizes, explode=explode, labels=labels)

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_explode.png')

print("Pie chart with explode effect saved to pie_chart_explode.png")

Ahora, ejecute el script actualizado desde la terminal:

python3 main.py

Verá esta salida:

Pie chart with explode effect saved to pie_chart_explode.png

Ahora hay un nuevo archivo pie_chart_explode.png en su directorio de proyecto. Ábralo para ver la porción de 'Hogs' ligeramente separada del resto del gráfico circular.

Pie chart with explode effect

Mostrar porcentajes usando autopct='%1.1f%%'

En este paso, agregará etiquetas de porcentaje a cada porción para hacer el gráfico más informativo. Esto se puede hacer usando el parámetro autopct.

El parámetro autopct acepta una cadena de formato que determina cómo se muestra el valor del porcentaje para cada porción. Por ejemplo, '%1.1f%%' formateará el número como un número de punto flotante con un decimal, seguido de un signo de porcentaje. El %% al final es necesario para mostrar un símbolo de % literal.

Actualicemos main.py para incluir los porcentajes. Guardaremos el resultado en pie_chart_percent.png.

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart with explode and percentage
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%')

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_percent.png')

print("Pie chart with percentages saved to pie_chart_percent.png")

Ejecute el script nuevamente desde su terminal:

python3 main.py

La salida será:

Pie chart with percentages saved to pie_chart_percent.png

Ahora, abra pie_chart_percent.png desde el explorador de archivos. Verá que cada porción ahora tiene su valor de porcentaje mostrado en ella.

Pie chart with percentages

Establecer sombra usando shadow=True

En este último paso, agregará una sombra al gráfico circular para darle un aspecto ligeramente tridimensional. Esto se hace fácilmente estableciendo el parámetro shadow en True.

Combinemos todas las características que hemos aprendido: explode, autopct y shadow. Guardaremos el gráfico final como pie_chart_final.png.

Actualice su archivo main.py con el código completo:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the final pie chart with all features
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=True, startangle=90)

## Equal aspect ratio ensures that pie is drawn as a circle.
ax.axis('equal')

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_final.png')

print("Final pie chart saved to pie_chart_final.png")

En esta versión final, también agregamos startangle=90 para rotar el punto de inicio del gráfico circular 90 grados en sentido antihorario, y ax.axis('equal') para asegurar que el gráfico circular se dibuje como un círculo perfecto.

Ejecute el script una última vez:

python3 main.py

La salida será:

Final pie chart saved to pie_chart_final.png

Abra pie_chart_final.png para ver su gráfico circular completo y con todas las funciones, con una porción explotada, etiquetas de porcentaje y una sombra.

Final pie chart

Resumen

¡Felicitaciones por completar el laboratorio! Ha aprendido con éxito a crear y personalizar gráficos circulares utilizando Matplotlib en Python.

En este laboratorio, ha aprendido a:

  • Preparar datos (etiquetas y tamaños) para un gráfico circular.
  • Trazar un gráfico circular básico usando plt.pie().
  • Guardar un gráfico de Matplotlib en un archivo de imagen usando plt.savefig().
  • Enfatizar una porción usando el parámetro explode.
  • Mostrar valores de porcentaje en las porciones usando el parámetro autopct.
  • Agregar un efecto visual 3D con el parámetro shadow=True.

Ahora está equipado con las habilidades fundamentales para crear gráficos circulares informativos y visualmente atractivos para sus proyectos de visualización de datos.