Gráfico circular de Seaborn
Este tutorial analizará la creación de un gráfico circular utilizando el atributo circular de Matplotlib
y las paletas de colores de Seaborn.
Crear un gráfico circular en Seaborn
El gráfico circular representa los datos en un gráfico circular que contiene porciones de diferentes colores. El tamaño de cada segmento en un gráfico circular depende de la proporción de datos numéricos.
El gráfico circular se utiliza para estudiar la proporción de datos numéricos. Muestra la proporción de datos como un porcentaje de un todo. Si una cantidad tiene una proporción numérica más alta en un dato dado, el tamaño y el porcentaje de su porción serán mayores que las otras porciones presentes en el gráfico circular.
Si queremos crear un gráfico circular usando seaborn en Python, tenemos que usar el atributo circular de Matplotlib
y las paletas de colores de Seaborn. Tenemos que pasar los datos de entrada y la paleta de colores para crear un gráfico circular.
Por ejemplo, creemos un gráfico circular de algunos datos aleatorios. Vea el código a continuación.
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
colors = sns.color_palette("pastel")
plt.pie(data, colors=colors)
plt.show()
Producción:
En el código anterior, hemos utilizado la paleta de colores pastel de Seaborn, pero podemos cambiar la paleta de colores como queramos. Seaborn tiene muchas opciones de paletas de colores disponibles como profundo, apagado, daltónico, brillante y oscuro.
Tenemos que pasar la paleta de colores como una cadena dentro del atributo color_palette()
. El atributo circular tiene muchos parámetros que podemos cambiar, como agregar etiquetas al gráfico circular usando un array de cadenas que contienen el nombre de las etiquetas.
También podemos agregar texto dentro de los cortes usando el parámetro autopct
. Por ejemplo, hagamos que el gráfico circular anterior sea más legible agregando etiquetas, cambiando la paleta de colores y agregando el porcentaje de división dentro de cada división. Vea el código a continuación.
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
labels = ["slice 1", "slice 2", "slice 3", "slice 4", "slice 5"]
colors = sns.color_palette("bright")
plt.pie(data, labels=labels, colors=colors, autopct="%0.0f%%")
plt.show()
Producción:
Podemos agregar cualquier texto dentro de cada segmento, pero agregamos el porcentaje de cada dato en este ejemplo. También podemos establecer la distancia del texto dentro de cada rebanada. Por defecto, la distancia del texto es 0,6, pero podemos cambiarla usando el parámetro pctdistance
.
También podemos establecer la distancia de la etiqueta usando el parámetro labeldistance
. De forma predeterminada, el valor de la distancia de la etiqueta es 1,1, pero podemos cambiarlo a cualquier valor de punto flotante. Si queremos crear espacio entre cada rebanada para que haya algún desplazamiento, podemos hacerlo usando el parámetro de explosión.
El valor del parámetro de explosión debe ser un array de la misma longitud que los datos de entrada. Por ejemplo, agreguemos un poco de compensación entre cada porción del gráfico circular anterior. Vea el código a continuación.
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
explode = [0.3, 0.02, 0.02, 0.02, 0.02]
labels = ["slice 1", "slice 2", "slice 3", "slice 4", "slice 5"]
colors = sns.color_palette("bright")
plt.pie(data, labels=labels, colors=colors, autopct="%0.0f%%", explode=explode)
plt.show()
Producción:
También podemos dibujar sombras debajo del gráfico circular usando el parámetro de sombra. De forma predeterminada, el parámetro de sombra se establece en falso, pero podemos establecerlo en verdadero. De forma predeterminada, el corte uno comenzará desde 0 grados, pero podemos cambiar eso usando el parámetro startangle
y estableciendo su valor en cualquier valor de punto flotante.
De forma predeterminada, los cortes comenzarán desde el eje x y seguirán la dirección en sentido contrario a las agujas del reloj, pero podemos configurarlo en el sentido de las agujas del reloj configurando el valor del parámetro en falso. También podemos establecer las propiedades del texto presente en el gráfico circular, como el tamaño de fuente o el color, utilizando el argumento textprops
.
También podemos establecer las propiedades de la cuña o cortes como su ancho de línea usando el parámetro wedgeprops
. De forma predeterminada, el marco se establece en falso, por eso no podemos ver el marco, pero podemos establecerlo en verdadero usando el parámetro de marco.
De forma predeterminada, el centro del gráfico circular está en 0, pero podemos cambiarlo a cualquier valor usando el parámetro del centro. También podemos rotar las etiquetas en la dirección del corte utilizando el parámetro rotatelabel
y estableciendo su valor en verdadero.
Por ejemplo, cambiemos los parámetros del gráfico circular como se mencionó anteriormente. Vea el código a continuación.
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
explode = [0.3, 0.02, 0.02, 0.02, 0.02]
labels = ["slice 1", "slice 2", "slice 3", "slice 4", "slice 5"]
colors = sns.color_palette("bright")
plt.pie(
data,
labels=labels,
colors=colors,
autopct="%0.0f%%",
explode=explode,
shadow="True",
startangle=90,
textprops={"color": "Green", "fontsize": 16},
wedgeprops={"linewidth": 6},
frame="true",
center=(0.1, 0.1),
rotatelabels="true",
)
plt.show()
Producción: