In dit artikel leert u de hist() functie te gebruiken om histogrammen te maken in R programmering met behulp van talrijke voorbeelden.
Histogrammen kunnen worden gemaakt met behulp van de hist()
functie in de programmeertaal R. Deze functie neemt een vector van waarden in waarvoor het histogram wordt geplot.
Laten we de ingebouwde dataset airquality
gebruiken die dagelijkse metingen van de luchtkwaliteit in New York bevat, mei tot september 1973.-R documentatie.
> str(airquality)'data.frame':153 obs. of 6 variables:$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...$ Month : int 5 5 5 5 5 5 5 5 5 5 ...$ Day : int 1 2 3 4 5 6 7 8 9 10 ...
We zullen de temperatuurparameter gebruiken die 154 waarnemingen in graden Fahrenheit heeft.
Voorbeeld 1: Eenvoudig histogram
Temperature <- airquality$Temphist(Temperature)
We zien hierboven dat er 9 cellen zijn met even ver uit elkaar staande onderbrekingen. In dit geval is de hoogte van een cel gelijk aan het aantal waarnemingen dat in die cel valt.
We kunnen extra parameters doorgeven om te bepalen hoe onze plot eruitziet. U kunt hierover lezen in de help-sectie ?hist
.
Enkele van de meest gebruikte zijn, main
om de titel te geven, xlab
en ylab
om labels voor de assen te geven, xlim
en ylim
om het bereik van de assen aan te geven, col
om de kleur te definiëren enz.
Extra, met het argument freq=FALSE
kunnen we de waarschijnlijkheidsverdeling krijgen in plaats van de frequentie.
Voorbeeld 2: Histogram met toegevoegde parameters
# histogram with added parametershist(Temperature,main="Maximum daily temperature at La Guardia Airport",xlab="Temperature in degrees Fahrenheit",xlim=c(50,100),col="darkmagenta",freq=FALSE)
Merk op dat de y-as is gelabeld als dichtheid in plaats van frequentie. In dit geval is het totale gebied van het histogram gelijk aan 1.
Return Waarde van hist()
De functie hist()
retourneert een lijst met 6 componenten.
> h <- hist(Temperature)> h$breaks 55 60 65 70 75 80 85 90 95 100$counts 8 10 15 19 33 34 20 12 2$density 0.010457516 0.013071895 0.019607843 0.024836601 0.043137255 0.044444444 0.026143791 0.015686275 0.002614379$mids 57.5 62.5 67.5 72.5 77.5 82.5 87.5 92.5 97.5$xname "Temperature"$equidist TRUEattr(,"class") "histogram"
We zien dat een object van klasse histogram
wordt teruggegeven dat heeft:
-
breaks
-plaatsen waar de breuken voorkomen, -
counts
-het aantal waarnemingen dat in die cel valt, -
density
-de dichtheid van de cellen,mids
-de middelpunten van cellen, -
xname
-de naam van het x-argument en -
equidist
een logische waarde die aangeeft of de breuken al dan niet op gelijke afstand van elkaar staan.
We kunnen deze waarden gebruiken voor verdere verwerking.
In het volgende voorbeeld gebruiken we bijvoorbeeld de returnwaarden om de tellingen boven aan elke cel te plaatsen met behulp van de text()
functie.
Voorbeeld 3: Histogram-retourwaarden gebruiken voor labels met behulp van text()
h <- hist(Temperature,ylim=c(0,40))text(h$mids,h$counts,labels=h$counts, adj=c(0.5, -0.5))
Histogram met tekst-retourwaarde
Het aantal breuken bepalen
Met het breaks
-argument kunnen we het aantal cellen opgeven dat we in het histogram willen hebben. Dit aantal is echter slechts een suggestie.
R berekent het beste aantal cellen, met deze suggestie in gedachten. Hieronder volgen twee histogrammen van dezelfde gegevens met verschillende aantallen cellen.
Voorbeeld 4: Histogram met verschillende onderbrekingen
hist(Temperature, breaks=4, main="With breaks=4")hist(Temperature, breaks=20, main="With breaks=20")
In de bovenstaande figuur zien we dat het werkelijke aantal geplotte cellen groter is dan we hadden opgegeven.
We kunnen ook onderbrekingspunten tussen de cellen definiëren als een vector. Dit maakt het mogelijk een histogram met ongelijke intervallen te tekenen. In dat geval is de oppervlakte van de cel evenredig met het aantal waarnemingen dat in die cel valt.
Voorbeeld 5: Histogram met niet-uniforme breedte
hist(Temperature,main="Maximum daily temperature at La Guardia Airport",xlab="Temperature in degrees Fahrenheit",xlim=c(50,100),col="chocolate",border="brown",breaks=c(55,60,70,75,80,100))