Matplotlib Gráfico circular
El gráfico circular (Pie Chart) es una herramienta de visualización de datos de uso común que se utiliza para mostrar la proporción que representa cada categoría en el total.
Podemos usar en pyplot elpie()método para dibujar un gráfico circular.
La sintaxis del método pie() es la siguiente:
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]
Descripción de parámetros:
-
x: Matriz o lista de números de punto flotante, datos para dibujar el gráfico circular, representa el área de cada sector.
-
explode: Matriz, representa la separación entre cada sector, el valor predeterminado es 0.
-
labels: Lista, etiquetas de cada sector, el valor predeterminado es None.
-
colors: Matriz, representa los colores de cada sector, el valor predeterminado es None.
-
autopct: Establece el formato de visualización del porcentaje de cada sector en el gráfico circular,%d%%porcentaje entero,%0.1fun decimal,%0.1f%%porcentaje con un decimal,%0.2f%%porcentaje con dos decimales.
-
labeldistance: Posición de dibujo de la etiqueta, proporción relativa al radio, el valor predeterminado es 1.1, por ejemplo<1se dibuja en el interior del gráfico circular.
-
pctdistance:: Similar a labeldistance, especifica la escala de posición de autopct, el valor predeterminado es 0.6.
-
shadow:: Valor booleano True o False, establece la sombra del gráfico circular, el valor predeterminado es False, no establece sombra.
-
radius:: Establece el radio del gráfico circular, el valor predeterminado es 1.
-
startangle:: Se utiliza para especificar el ángulo inicial del gráfico circular, por defecto se dibuja en sentido antihorario desde la dirección positiva del eje x; por ejemplo, si se establece =90, se dibuja desde la dirección positiva del eje y.
-
counterclock: Valor booleano, se utiliza para especificar si los sectores se dibujan en sentido antihorario, el valor predeterminado es True, es decir, dibujo antihorario; False es horario.
- wedgeprops: Tipo diccionario, valor predeterminado None. Se utiliza para especificar atributos del sector, como color del borde, ancho del borde, etc. Por ejemplo: wedgeprops={'linewidth':5} establece el ancho de línea de wedge en 5.
- textprops: Tipo diccionario, se utiliza para especificar atributos de las etiquetas de texto, como tamaño de fuente, color de fuente, etc., el valor predeterminado es None.
- center: Lista de tipo flotante, se utiliza para especificar la posición central del gráfico circular, valor predeterminado: (0,0).
- frame: Tipo booleano, se utiliza para especificar si se dibuja el borde del gráfico circular, valor predeterminado: False. Si es True, dibuja el marco de los ejes con el gráfico.
- rotatelabels: Tipo booleano, se utiliza para especificar si se rotan las etiquetas de texto, el valor predeterminado es False. Si es True, rota cada etiqueta al ángulo especificado.
-
data: Se utiliza para especificar datos. Si se establece el parámetro data, se pueden usar directamente las columnas del marco de datos como valores de los parámetros x, labels, etc., sin necesidad de volver a pasarlos.
Además, la función pie() también puede devolver tres parámetros:
wedges: Una lista que contiene objetos de sectores.texts: Una lista que contiene objetos de etiquetas de texto.autotexts: Una lista que contiene objetos de etiquetas de texto generados automáticamente.
En el siguiente ejemplo usamos pie() de forma sencilla para crear un gráfico circular:
Ejemplo
import numpy as np
y = np.array([35, 25, 25, 15])
plt.pie(y)
plt.show()
El resultado se muestra a continuación:

Establecer las etiquetas y los colores de cada sector del gráfico circular:
Ejemplo
import numpy as np
y = np.array([35, 25, 25, 15])
plt.pie(y,
labels=['A','B','C','D'], # Establecer las etiquetas del gráfico circular
colors=["#d5695d", "#5d8ca8", "#5B80A6", "#a564c9"], # Establecer los colores del gráfico circular
)
plt.title("EJEMPLO Pie Test") # Establecer el título
plt.show()
El resultado se muestra a continuación:

Resaltar el segundo sector y formatear el porcentaje de salida:
Ejemplo
# Datos
sizes = [15, 30, 45, 10]
# Etiquetas del gráfico circular
labels = ['A', 'B', 'C', 'D']
# Colores del gráfico circular
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
# Resaltar el segundo sector
explode = (0, 0.1, 0, 0)
# Dibujar el gráfico circular
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=90)
# Título
plt.title("EJEMPLO Pie Test")
# Mostrar la gráfica
plt.show()
Definimos una lista sizes con 4 elementos, que representa la proporción de cada categoría en el total. Luego, definimos una lista labels con 4 elementos, que representa las etiquetas de cada categoría. A continuación, definimos una lista colors con 4 elementos, que representa el color de cada categoría. Después, definimos una tupla explode con 4 elementos, que se utiliza para especificar si se resalta algún sector. Seguidamente, llamamos a la función plt.pie para dibujar el gráfico circular, pasando los parámetros mencionados. Finalmente, añadimos un título y llamamos a plt.show() para mostrar la gráfica.
El resultado se muestra a continuación:

Ejemplo
import numpy as np
y = np.array([35, 25, 25, 15])
plt.pie(y,
labels=['A','B','C','D'], # Establecer las etiquetas del gráfico circular
colors=["#d5695d", "#5d8ca8", "#5B80A6", "#a564c9"], # Establecer los colores del gráfico circular
explode=(0, 0.2, 0, 0), # La segunda parte se resalta; cuanto mayor es el valor, más lejos del centro.
autopct='%.2f%%', # Formatear el porcentaje de salida
)
plt.title("EJEMPLO Pie Test")
plt.show()

Otras extensionesNota:De forma predeterminada, el primer sector se dibuja desde el eje x y se mueve en sentido antihorario:
