logo

Box Plot a Python mitjançant Matplotlib

Què és Box Plot?

Un diagrama de caixa és una manera de visualitzar la distribució de les dades mitjançant un quadre i unes línies verticals. Es coneix com la trama de bigotis. Les dades es poden distribuir entre cinc rangs clau, que són els següents:

    Mínim: Q1-1,5*IQR1r quartil(Q1): percentil 25Mitjana: percentil 503r trimestre(Q3): percentil 75Màxim: Q3+1,5*IQR

Aquí IQR representa el Gamma interquartil que comença des del primer quartil (Q1) i acaba en el tercer quartil (Q3).

Visualització de Box Plot

Box Plot a Python mitjançant Matplotlib

En el diagrama de caixa, aquells punts que estan fora de rang s'anomenen valors atípics. Podem crear el diagrama de caixa de les dades per determinar el següent:

  • El nombre de valors atípics en un conjunt de dades
  • Les dades estan esbiaixades o no
  • L'abast de les dades

L'interval de dades del mínim al màxim s'anomena límit de bigotis. A Python, utilitzarem el mòdul pyplot del mòdul matplotlib, que té una funció incorporada anomenada boxplot() que pot crear el diagrama de caixa de qualsevol conjunt de dades.

Sintaxi:

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

A la funció boxplot() tenim molts atributs que es poden utilitzar per crear un diagrama de caixa més atractiu i sorprenent del conjunt de dades.

    dades: Les dades han de ser una matriu o una seqüència de matrius que es representaran.osca: aquest paràmetre només accepta valors booleans, ja sigui cert o fals.Verd: aquest atribut accepta un valor booleà. Si s'estableix com a cert, el gràfic serà vertical. En cas contrari, serà horitzontal.posició: Accepta la matriu d'enters que defineix la posició de la caixa.amplades: Accepta la matriu d'enters que defineix l'amplada del quadre.patch_artist: aquest paràmetre accepta valors booleans, ja sigui cert o fals, i és un paràmetre opcional.etiquetes: accepta les cadenes que defineixen les etiquetes per a cada punt de dadeslínia mitjana: accepta un valor booleà i és opcional.ordre: estableix l'ordre de la trama de caixa.bootstrap: Accepta el valor enter, que especifica l'interval del diagrama de caixa amb osques.

Exemple 1:

Crearem el conjunt de dades aleatòries de la matriu numpy i crearem el diagrama de caixa.

 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() 

Sortida:

Box Plot a Python mitjançant Matplotlib

Explicació:

En el codi anterior, en primer lloc, hem importat les biblioteques numpy i matplotlib al codi. A continuació, vam crear el conjunt de dades aleatòria i vam representar el diagrama de caixa mitjançant la funció boxplot().

Exemple 2:

Podem crear múltiples diagrames de caixa simultàniament en el mateix fitxer.

java convertint nombre enter en cadena
 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() 

Sortida:

Box Plot a Python mitjançant Matplotlib

Explicació:

Al codi anterior, tenim quatre conjunts de dades que utilitzen mètodes aleatoris de numpy. A continuació, hem creat la llista dels quatre conjunts de dades i hem utilitzat aquesta funció dins de boxplot().

Exemple 3:

Podem utilitzar alguns atributs de la funció boxplot() per personalitzar la trama.

 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() 

Sortida:

Box Plot a Python mitjançant Matplotlib

Explicació:

Al codi anterior, hem creat els quatre conjunts de dades mitjançant funcions aleatòries i els hem configurat en una llista. Ara hem establert els diferents colors per a cada diagrama de caixa mitjançant la llista de colors i utilitzant la funció set_facecolor().

Hem establert l'amplada de línia de cada diagrama de caixa i també hem establert les etiquetes per a cada diagrama de caixa. Hem establert l'atribut vert = 0, el que significa que totes les trames estaran en mode horitzontal.