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:
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
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.
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:
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:
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:
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.