logo

Diagrama de caja en Python usando Matplotlib

¿Qué es el diagrama de caja?

Un diagrama de caja es una forma de visualizar la distribución de los datos mediante el uso de un cuadro y algunas líneas verticales. Se conoce como el diagrama de los bigotes. Los datos se pueden distribuir en cinco rangos clave, que son los siguientes:

    Mínimo: Q1-1.5*RIC1er cuartil(Q1): percentil 25Mediana:percentil 503er trimestre(Q3): percentil 75Máximo: Q3+1,5*RIQ

Aquí el IQR representa el Rango intercuartil que comienza desde el primer cuartil (Q1) y termina en el tercer cuartil (Q3).

Visualización del diagrama de caja

Diagrama de caja en Python usando Matplotlib

En el diagrama de caja, los puntos que están fuera de rango se denominan valores atípicos. Podemos crear el diagrama de caja de los datos para determinar lo siguiente:

  • El número de valores atípicos en un conjunto de datos.
  • ¿Los datos están sesgados o no?
  • El rango de los datos.

El rango de datos del mínimo al máximo se denomina límite de bigotes. En Python, usaremos el módulo pyplot del módulo matplotlib, que tiene una función incorporada llamada boxplot() que puede crear el diagrama de caja de cualquier conjunto de datos.

Sintaxis:

 matplotlib.pyplot.boxplot(data,notch=none,vert=none,patch_artist,widths=none) 

En la función boxplot(), tenemos muchos atributos que se pueden usar para crear un diagrama de caja más atractivo y sorprendente del conjunto de datos.

    datos: Los datos deben ser una matriz o secuencia de matrices que se trazarán.muesca: Este parámetro acepta sólo valores booleanos, ya sean verdaderos o falsos.Verde: Este atributo acepta un valor booleano. Si se establece en verdadero, entonces el gráfico será vertical. De lo contrario, quedará horizontal.posición: Acepta la matriz de números enteros que define la posición del cuadro.anchos: Acepta la matriz de números enteros que define el ancho del cuadro.artista_parche: este parámetro acepta valores booleanos, ya sean verdaderos o falsos, y es un parámetro opcional.etiquetas: Esto acepta las cadenas que definen las etiquetas para cada punto de datos.línea media: Acepta un valor booleano y es opcional.orden: Establece el orden del diagrama de caja.oreja: Acepta el valor entero, que especifica el rango del diagrama de caja con muescas.

Ejemplo 1:

Crearemos el conjunto de datos aleatorios de la matriz numpy y crearemos el diagrama de caja.

 import matplotlib.pyplot as plt import numpy as np np.random.seed(15) dataSet = np.random.normal(100, 25, 200) print(dataSet) figure = plt.figure(figsize =(10, 8)) plt.boxplot(dataSet) plt.show() 

Producción:

Diagrama de caja en Python usando Matplotlib

Explicación:

En el código anterior, en primer lugar, hemos importado las bibliotecas numpy y matplotlib en el código. Luego creamos el conjunto de datos aleatorio y trazamos el diagrama de caja usando la función boxplot().

np.ceros

Ejemplo2:

Podemos crear múltiples diagramas de caja simultáneamente en el mismo archivo.

 import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_axes([0, 0, 1, 1]) bp = ax.boxplot(dataSet) plt.show() 

Producción:

Diagrama de caja en Python usando Matplotlib

Explicación:

En el código anterior, tenemos cuatro conjuntos de datos que utilizan métodos aleatorios de numpy. Luego hemos creado la lista de los cuatro conjuntos de datos y utilizamos esta función interna boxplot().

Ejemplo 3:

Podemos usar algunos atributos de la función boxplot() para personalizar el gráfico.

 import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_subplot(111) bp = ax.boxplot(dataSet, patch_artist = True,notch ='True', vert = 0) colors = ['#00FF00','#0F00FF', '#F00FF0','#FFFF0F'] for patch, color in zip(bp['boxes'], colors): patch.set_facecolor(color) for whisker in bp['whiskers']: whisker.set(color ='#8E008B',linewidth = 1.4,linestyle =':') for cap in bp['caps']: cap.set(color ='#8E008B',linewidth = 2.1) for median in bp['medians']: median.set(color ='blue',linewidth = 3) for flier in bp['fliers']: flier.set(marker ='D',color ='#d7298c',alpha = 0.6) ax.set_yticklabels(['dataSet1', 'dataSet2','dataSet3', 'dataSet4']) plt.title('Customized box plot using attributes') ax.get_xaxis().tick_bottom() ax.get_yaxis().tick_left() plt.show() 

Producción:

Diagrama de caja en Python usando Matplotlib

Explicación:

En el código anterior, creamos los cuatro conjuntos de datos utilizando funciones aleatorias y los configuramos en una lista. Ahora hemos configurado los diferentes colores para cada diagrama de caja usando la lista de colores y usando la función set_facecolor().

Hemos establecido el ancho de línea de cada diagrama de caja y también configuramos las etiquetas para cada diagrama de caja. Hemos establecido el atributo vert =0, lo que significa que todos los gráficos estarán en modo horizontal.