Diagrama de caja en Python usando Matplotlib

Un diagrama de caja , también conocido como diagrama de bigotes , se crea para mostrar el resumen del conjunto de valores de datos que tienen propiedades como mínimo, primer cuartil, mediana, tercer cuartil y máximo. En el diagrama de caja, se crea una caja desde el primer cuartil hasta el tercer cuartil, también hay una línea vertical que atraviesa la caja en la mediana. Aquí, el eje x indica los datos que se trazarán, mientras que el eje y muestra la distribución de frecuencia.

Crear diagrama de caja

El módulo matplotlib.pyplot de la biblioteca matplotlib proporciona la función boxplot() con la ayuda de la cual podemos crear diagramas de caja.

Sintaxis: 

matplotlib.pyplot.boxplot(datos, muesca=Ninguno, vert=Ninguno, patch_artist=Ninguno, anchos=Ninguno)

Parámetros: 

Atributo Valor
datos array o secuencia de array a trazar
muesca el parámetro opcional acepta valores booleanos
vert el parámetro opcional acepta valores booleanos falso y verdadero para gráficos horizontales y verticales respectivamente
oreja parámetro opcional acepta int especifica intervalos alrededor de diagramas de caja con muescas
usuariosmedianos el parámetro opcional acepta array o secuencia de dimensión de array compatible con los datos
posiciones el parámetro opcional acepta la array y establece la posición de los cuadros
anchos el parámetro opcional acepta la array y establece el ancho de las cajas
artista_parche parámetro opcional que tiene valores booleanos
etiquetas secuencia de strings establece la etiqueta para cada conjunto de datos
línea media opcional tener un valor booleano intente representar la línea media como ancho completo del cuadro
ordenar parámetro opcional establece el orden del diagrama de caja

Los valores de datos proporcionados al método ax.boxplot() pueden ser una array Numpy o una lista de Python o una tupla de arrays. Vamos a crear el diagrama de caja usando numpy.random.normal() para crear algunos datos aleatorios, toma la media, la desviación estándar y la cantidad deseada de valores como argumentos.

Ejemplo:  

Python3

# Import libraries
import matplotlib.pyplot as plt
import numpy as np
 
 
# Creating dataset
np.random.seed(10)
data = np.random.normal(100, 20, 200)
 
fig = plt.figure(figsize =(10, 7))
 
# Creating plot
plt.boxplot(data)
 
# show plot
plt.show()

Producción: 

box-plot-python

Personalización de diagrama de caja

matplotlib.pyplot.boxplot() ofrece infinitas posibilidades de personalización para el diagrama de caja. El atributo muesca = True crea el formato de muesca para el diagrama de caja, patch_artist = True llena el diagrama de caja con colores, podemos establecer diferentes colores para diferentes cuadros. El atributo vert = 0 crea un diagrama de caja horizontal. Las etiquetas tienen las mismas dimensiones que los conjuntos de datos numéricos.

Ejemplo 1: 

Python3

# Import libraries
import matplotlib.pyplot as plt
import numpy as np
 
 
# Creating dataset
np.random.seed(10)
 
data_1 = np.random.normal(100, 10, 200)
data_2 = np.random.normal(90, 20, 200)
data_3 = np.random.normal(80, 30, 200)
data_4 = np.random.normal(70, 40, 200)
data = [data_1, data_2, data_3, data_4]
 
fig = plt.figure(figsize =(10, 7))
 
# Creating axes instance
ax = fig.add_axes([0, 0, 1, 1])
 
# Creating plot
bp = ax.boxplot(data)
 
# show plot
plt.show()

Producción: 

box-plot-python

Ejemplo 2: Intentemos modificar el gráfico anterior con algunas de las personalizaciones: 

Python3

# Import libraries
import matplotlib.pyplot as plt
import numpy as np
 
# Creating dataset
np.random.seed(10)
data_1 = np.random.normal(100, 10, 200)
data_2 = np.random.normal(90, 20, 200)
data_3 = np.random.normal(80, 30, 200)
data_4 = np.random.normal(70, 40, 200)
data = [data_1, data_2, data_3, data_4]
 
fig = plt.figure(figsize =(10, 7))
ax = fig.add_subplot(111)
 
# Creating axes instance
bp = ax.boxplot(data, patch_artist = True,
                notch ='True', vert = 0)
 
colors = ['#0000FF', '#00FF00',
          '#FFFF00', '#FF00FF']
 
for patch, color in zip(bp['boxes'], colors):
    patch.set_facecolor(color)
 
# changing color and linewidth of
# whiskers
for whisker in bp['whiskers']:
    whisker.set(color ='#8B008B',
                linewidth = 1.5,
                linestyle =":")
 
# changing color and linewidth of
# caps
for cap in bp['caps']:
    cap.set(color ='#8B008B',
            linewidth = 2)
 
# changing color and linewidth of
# medians
for median in bp['medians']:
    median.set(color ='red',
               linewidth = 3)
 
# changing style of fliers
for flier in bp['fliers']:
    flier.set(marker ='D',
              color ='#e7298a',
              alpha = 0.5)
     
# x-axis labels
ax.set_yticklabels(['data_1', 'data_2',
                    'data_3', 'data_4'])
 
# Adding title
plt.title("Customized box plot")
 
# Removing top axes and right axes
# ticks
ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()
     
# show plot
plt.show()

Producción: 

box-plot-python

Publicación traducida automáticamente

Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *