Diagrama de caja de Matplotlib - Tutorial y ejemplos

En este tutorial, cubriremos cómo trazar diagramas de caja en Matplotlib con Python. Cubriremos diagramas de caja básicos y personalización con ejemplos en detalle.

Introducción

Hay muchas bibliotecas de visualización de datos en Python, pero Matplotlib es la biblioteca más popular de todas. La popularidad de Matplotlib se debe a su confiabilidad y utilidad: es capaz de crear gráficos simples y complejos con poco código. También puede personalizar las tramas de varias formas.

En este tutorial, cubriremos cómo trazar diagramas de caja en Matplotlib.

Los diagramas de caja se utilizan para visualizar estadísticas resumidas de un conjunto de datos, mostrando atributos de la distribución como el rango y la distribución de los datos.

Importación de datos

Para crear un diagrama de caja, necesitaremos algunos datos para trazar. Tendremos que elegir un conjunto de datos que contenga variables continuas como características, ya que los diagramas de caja visualizan la distribución de variables continuas. Trabajaremos con el conjunto de datos Calidad del Vino.

Comenzaremos importando todas las bibliotecas que necesitamos. Importaremos Pandas para leer y analizar el conjunto de datos y, por supuesto, también necesitaremos importar Matplotlib o, más exactamente, el módulo PyPlot:

1
2
import pandas as pd
from matplotlib import pyplot as plt

Verifiquemos para asegurarnos de que nuestro conjunto de datos esté listo para usar. Imprimiremos el encabezado del conjunto de datos para asegurarnos de que los datos se hayan cargado correctamente y también verificaremos que no falten entradas de datos:

1
2
3
dataframe = pd.read_csv("winequality-red.csv")
print(dataframe.head())
print(dataframe.isnull().values.any())
1
2
3
4
5
6
7
8
9
   fixed acidity  volatile acidity  citric acid  ...  sulphates  alcohol  quality
0            7.4              0.70         0.00  ...       0.56      9.4        5
1            7.8              0.88         0.00  ...       0.68      9.8        5
2            7.8              0.76         0.04  ...       0.65      9.8        5
3           11.2              0.28         0.56  ...       0.58      9.8        6
4            7.4              0.70         0.00  ...       0.56      9.4        5

[5 rows x 12 columns]
False

The second print statement returns False, which means that there isn't any missing data. If there were, we'd have to manejar los valores faltantes de DataFrame.

Trace un diagrama de caja en Matplotlib

Seleccionemos algunas características del conjunto de datos y visualicemos esas características con la función boxplot(). Haremos uso de Pandas para extraer las columnas de características que queremos y las guardaremos como variables para mayor comodidad:

1
2
3
4
fixed_acidity = dataframe["fixed acidity"]
free_sulfur_dioxide = dataframe['free sulfur dioxide']
total_sulfur_dioxide = dataframe['total sulfur dioxide']
alcohol = dataframe['alcohol']

Como de costumbre, podemos llamar a las funciones de trazado en la instancia de PyPlot (plt), la instancia de Figura o la instancia de Ejes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.read_csv("winequality-red.csv")

fixed_acidity = dataframe["fixed acidity"]
free_sulfur_dioxide = dataframe['free sulfur dioxide']
total_sulfur_dioxide = dataframe['total sulfur dioxide']
alcohol = dataframe['alcohol']

fig, ax = plt.subplots()
ax.boxplot(fixed_acidity)
plt.show()

Aquí, hemos extraído los objetos fig y ax del retorno de la función subplots(), por lo que podemos usar cualquiera de ellos para llamar a la función boxplot(). Alternativamente, podríamos simplemente haber llamado plt.boxplot().

En cualquier caso, esto resulta en:

diagrama de caja simple matplotlib

Después de crear el gráfico, podemos ver algunas de las estadísticas de resumen de nuestros datos. El diagrama de caja muestra la mediana del conjunto de datos (la línea vertical en el medio), así como los rangos intercuartílicos (los extremos de las cajas) y los valores mínimo y máximo de la característica del conjunto de datos elegido (el extremo más alejado de los “bigotes”). “).

También podemos trazar múltiples columnas en una figura, simplemente proporcionando más columnas. De nuevo, esto se puede hacer en la instancia plt, el objeto fig o el objeto ax:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.read_csv("winequality-red.csv")

fixed_acidity = dataframe["fixed acidity"]
free_sulfur_dioxide = dataframe['free sulfur dioxide']
total_sulfur_dioxide = dataframe['total sulfur dioxide']
alcohol = dataframe['alcohol']

columns = [fixed_acidity, free_sulfur_dioxide, total_sulfur_dioxide, alcohol]

fig, ax = plt.subplots()
ax.boxplot(columns)
plt.show()

Esto resulta en:

box plot matplotlib columnas multiples

Ahora, tenemos mucho más en marcha, ya que hemos decidido trazar varias columnas.

Personalización de la trama

Como puede ver, aunque los gráficos se generaron con éxito, sin etiquetas de marca en los ejes X e Y, es difícil interpretar el gráfico.

Podemos personalizar el gráfico y agregar etiquetas al eje X usando la función xticks. Pasemos el número de etiquetas que queremos agregar y luego las etiquetas para cada una de esas columnas:

1
2
3
4
fig, ax = plt.subplots()
ax.boxplot(columns)
plt.xticks([1, 2, 3, 4], ["Fixed acidity", "Free sulfur dioxide", "Total sulfur dioxide", "Alcohol"], rotation=10)
plt.show()

etiqueta personalización box plot matplotlib

Si quisiéramos, también podríamos cambiar la orientación de la trama alterando el parámetro vert. vert controla si el gráfico se renderiza verticalmente o no y se establece en 1 de forma predeterminada:

1
2
3
fig, ax = plt.subplots()
ax.boxplot(fixed_acidity, vert=0)
plt.show()

diagrama de caja vertical matplotlib

El atributo notch=True crea el formato de muesca para el diagrama de caja, patch_artist=True llena el diagrama de caja con colores:

1
2
3
4
5
fig, ax = plt.subplots()
columns = [free_sulfur_dioxide, total_sulfur_dioxide]
ax.boxplot(columns, notch=True, patch_artist=True)
plt.xticks([1, 2], ["Free sulfur dioxide", "Total sulfur dioxide"])
plt.show()

muescas y parches box plot matplotlib

Podemos hacer uso del argumento meanline para representar la media en el cuadro, aunque esto debe evitarse si también mostramos muescas, ya que pueden entrar en conflicto.

Esto debe combinarse con el parámetro showmean. Si es posible, la media se visualizará como una línea que atraviesa todo el cuadro. Si no es posible, la media se mostrará como puntos:

1
2
3
4
5
fig, ax = plt.subplots()
columns = [free_sulfur_dioxide, total_sulfur_dioxide]
ax.boxplot(columns, patch_artist=True, meanline=True, showmeans=True)
plt.xticks([1, 2], ["Free sulfur dioxide", "Total sulfur dioxide"])
plt.show()

showmean box plot matplotlib

Podemos colorear la columna de características diferentes creando una lista de valores de color hexadecimales y usando el argumento set_facecolor. En el siguiente ejemplo, comprimimos el elemento boxes de la variable box junto con los colores que queremos usar y luego establecemos el color de la cara para cada uno de esos cuadros.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
columns = [fixed_acidity, free_sulfur_dioxide, total_sulfur_dioxide, alcohol]
fig, ax = plt.subplots()
box = ax.boxplot(columns, notch=True, patch_artist=True)
plt.xticks([1, 2, 3, 4], ["Fixed acidity", "Free sulfur dioxide", "Total sulfur dioxide", "Alochol"])

colors = ['#0000FF', '#00FF00',
          '#FFFF00', '#FF00FF']

for patch, color in zip(box['boxes'], colors):
    patch.set_facecolor(color)

plt.show()

cambiar colores de box plot matplotlib

Conclusión

En este tutorial, aprendimos cómo crear un diagrama de caja en Matplotlib y Python. Luego, echamos un vistazo a cómo puedes personalizarlo usando argumentos como vert, meanline y set_facecolor.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.