logo

Boxplot in Python met Matplotlib

Wat is boxplot?

Een boxplot is een manier om de verdeling van de gegevens te visualiseren door een box en enkele verticale lijnen te gebruiken. Het staat bekend als het snorhaarplot. De gegevens kunnen worden verdeeld over vijf sleutelbereiken, namelijk:

    Minimum: Q1-1,5*IQR1e kwartiel(Q1): 25e percentielMediaan:50e percentiel3e kwartaal(Q3):75e percentielMaximaal: Q3+1,5*IQR

Hier vertegenwoordigt IQR de Interkwartielbereik die begint vanaf het eerste kwartiel (Q1) en eindigt bij het derde kwartiel (Q3).

Boxplot-visualisatie

Boxplot in Python met Matplotlib

In de boxplot worden de punten die buiten het bereik vallen uitbijters genoemd. We kunnen een boxplot van de gegevens maken om het volgende te bepalen:

  • Het aantal uitbijters in een gegevensset
  • Zijn de gegevens scheef of niet?
  • Het bereik van de gegevens

Het bereik van de gegevens van minimum tot maximum wordt dewhiskerlimiet genoemd. In Python zullen we de pyplot-module van de matplotlib-module gebruiken, die een ingebouwde functie heeft genaamd boxplot() die de boxplot van elke dataset kan creëren.

Syntaxis:

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

In de boxplot()-functie hebben we veel attributen die kunnen worden gebruikt om een ​​aantrekkelijker en verbazingwekkender boxplot van de dataset te creëren.

    gegevens: De gegevens moeten een array of een reeks arrays zijn die worden geplot.inkeping: Deze parameter accepteert alleen Booleaanse waarden, waar of onwaar.Groente: Dit attribuut accepteert een Booleaanse waarde. Als deze op True is ingesteld, is de grafiek verticaal. Anders zal het horizontaal zijn.positie: Het accepteert de reeks gehele getallen die de positie van het vak definiëren.breedtes: Het accepteert de reeks gehele getallen die de breedte van het vak definieert.patch_artiest: deze parameter accepteert Booleaanse waarden, waar of onwaar, en dit is een optionele parameter.etiketten: Dit accepteert de tekenreeksen die de labels voor elk gegevenspunt definiërengemene lijn: Het accepteert een Booleaanse waarde en is optioneel.volgorde: Het bepaalt de volgorde van de boxplot.bootstrap: Het accepteert de gehele waarde, die het bereik van de gekerfde boxplot specificeert.

Voorbeeld 1:

We zullen de willekeurige gegevensset van de numpy-array maken en de boxplot maken.

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

Uitgang:

Boxplot in Python met Matplotlib

Uitleg:

In de bovenstaande code hebben we allereerst de numpy- en matplotlib-bibliotheken in de code geïmporteerd. Vervolgens hebben we de willekeurige gegevensset gemaakt en de boxplot uitgezet met behulp van de boxplot() functie.

Voorbeeld2:

We kunnen meerdere boxplots tegelijkertijd in hetzelfde bestand maken.

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

Uitgang:

Boxplot in Python met Matplotlib

Uitleg:

In de bovenstaande code hebben we vier datasets die willekeurige numpy-methoden gebruiken. Vervolgens hebben we de lijst met de vier datasets gemaakt en gebruiken we deze inside boxplot() -functie.

Voorbeeld 3:

We kunnen enkele attributen van de boxplot()-functie gebruiken om de plot aan te passen.

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

Uitgang:

Boxplot in Python met Matplotlib

Uitleg:

In de bovenstaande code hebben we de vier datasets gemaakt met behulp van willekeurige functies en deze in een lijst geplaatst. Nu hebben we de verschillende kleuren voor elke boxplot ingesteld met behulp van de lijst met kleuren en met behulp van de functie set_facecolor().

We hebben de lijnbreedte van elke boxplot ingesteld en ook de labels voor elke boxplot ingesteld. We hebben attribuut vert =0 ingesteld, wat betekent dat alle plots zich in horizontale modus bevinden.