A Diagrama de caja también es conocido como Trama 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 un cuadro desde el primer cuartil al tercer cuartil, también hay una línea vertical que pasa por el cuadro en la mediana. Aquí, el eje x indica los datos que se van a representar, 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, notch=Ninguno, vert=Ninguno, patch_artist=Ninguno, anchos=Ninguno)
Parámetros:
| Atributo | Valor |
|---|---|
| datos | matriz o secuencia de matriz que se va a trazar |
| muesca | El parámetro opcional acepta valores booleanos. |
| Verde | El parámetro opcional acepta valores booleanos falso y verdadero para el trazado horizontal y vertical respectivamente. |
| oreja | El parámetro opcional acepta int, especifica intervalos alrededor de diagramas de caja con muescas. |
| medias de usuario | El parámetro opcional acepta una matriz o secuencia de dimensiones de matriz compatibles con los datos. |
| posiciones | El parámetro opcional acepta una matriz y establece la posición de las cajas. |
| anchos | El parámetro opcional acepta una matriz y establece el ancho de los cuadros. |
| artista_parche | parámetro opcional que tiene valores booleanos |
| etiquetas | La secuencia de cadenas establece la etiqueta para cada conjunto de datos. |
| línea media | Opcional con valor booleano, intente representar la línea media como el ancho completo del cuadro. |
| orden | El parámetro opcional establece el orden del diagrama de caja. |
Los valores de datos proporcionados al método ax.boxplot() pueden ser una matriz Numpy o una lista de Python o una tupla de matrices. Creemos 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
np.ceros
# 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:

Personalización del diagrama de caja
matplotlib.pyplot.boxplot() proporciona infinitas posibilidades de personalización del diagrama de caja. El atributo notch = 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:

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:
