logo

Box Plot i Python med Matplotlib

Vad är Box Plot?

En boxplot är ett sätt att visualisera distributionen av data genom att använda en ruta och några vertikala linjer. Det är känt som whisker plot. Data kan fördelas mellan fem nyckelområden, som är följande:

    Minimum: Q1-1,5*IQR1:a kvartilen(Q1): 25:e percentilenMedian:50:e percentilen3:e kvartalet(Q3):75:e percentilenMaximal: Q3+1,5*IQR

Här representerar IQR Kvartilavståndet som börjar från den första kvartilen (Q1) och slutar vid den tredje kvartilen (Q3).

Box Plot visualisering

Box Plot i Python med Matplotlib

I boxplotten kallas de punkter som ligger utanför intervallet för extremvärden. Vi kan skapa boxplotten för data för att bestämma följande:

  • Antalet extremvärden i en datauppsättning
  • Är uppgifterna skeva eller inte
  • Dataintervallet

Dataintervallet från minimum till maximum kallas whisker limit. I Python kommer vi att använda matplotlib-modulens pyplot-modul, som har en inbyggd funktion som heter boxplot() som kan skapa boxplotten för vilken datauppsättning som helst.

Syntax:

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

I funktionen boxplot() har vi många attribut som kan användas för att skapa en mer attraktiv och fantastisk boxplot av datamängden.

    data: Data bör vara en array eller sekvens av arrayer som kommer att plottas.hack: Den här parametern accepterar endast booleska värden, antingen sant eller falskt.Grön: Det här attributet accepterar ett booleskt värde. Om den är inställd på sant kommer grafen att vara vertikal. Annars blir det horisontellt.placera: Den accepterar arrayen av heltal som definierar rutans position.bredder: Den accepterar matrisen av heltal som definierar bredden på rutan.patch_artist: denna parameter accepterar booleska värden, antingen sant eller falskt, och detta är en valfri parameter.etiketter: Detta accepterar strängarna som definierar etiketterna för varje datapunktmedellinje: Det accepterar ett booleskt värde, och det är valfritt.beställa: Den anger ordningen på boxplotten.bootstrap: Den accepterar heltalsvärdet, som anger intervallet för den skårade boxplotten.

Exempel 1:

Vi kommer att skapa den slumpmässiga datamängden för numpy-arrayen och skapa boxplotten.

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

Produktion:

Box Plot i Python med Matplotlib

Förklaring:

I koden ovan har vi först och främst importerat biblioteken numpy och matplotlib i koden. Sedan skapade vi den slumpmässiga datamängden och plottade boxplotten med funktionen boxplot().

Exempel 2:

Vi kan skapa flera boxplots samtidigt i samma fil.

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

Produktion:

Box Plot i Python med Matplotlib

Förklaring:

I ovanstående kod har vi fyra datamängder med slumpmässiga metoder för numpy. Sedan har vi skapat listan med de fyra datamängderna och använder denna inside boxplot()-funktion.

Exempel 3:

Vi kan använda några attribut för boxplot()-funktionen för att anpassa plotten.

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

Produktion:

Box Plot i Python med Matplotlib

Förklaring:

I koden ovan har vi skapat de fyra datamängderna med slumpmässiga funktioner och satt dem i en lista. Nu har vi ställt in de olika färgerna för varje boxplott med hjälp av listan över färger och med funktionen set_facecolor().

Vi har ställt in linjebredden för varje boxplot och även ställt in etiketterna för varje boxplot. Vi har satt attributet vert =0, vilket betyder att alla plotter kommer att vara i horisontellt läge.