logo

Diagrama de caja en Python usando Matplotlib

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:

diagrama de caja-python

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:

diagrama de caja-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:

diagrama de caja-python