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:
Hier vertegenwoordigt IQR de Interkwartielbereik die begint vanaf het eerste kwartiel (Q1) en eindigt bij het derde kwartiel (Q3).
Boxplot-visualisatie
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.
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:
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:
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:
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.