In diesem Artikel lernen Sie anhand zahlreicher Beispiele, wie Sie mit der Funktion hist() Histogramme in der R-Programmierung erstellen können.
Histogramme können in der Programmiersprache R mit der Funktion hist()
erstellt werden. Diese Funktion nimmt einen Vektor von Werten auf, für die das Histogramm gezeichnet wird.
Lassen Sie uns den eingebauten Datensatz airquality
verwenden, der die täglichen Luftqualitätsmessungen in New York, Mai bis September 1973, enthält – R-Dokumentation.
> 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 ...
Wir werden den Parameter Temperatur verwenden, der 154 Beobachtungen in Grad Fahrenheit hat.
Beispiel 1: Einfaches Histogramm
Temperature <- airquality$Temphist(Temperature)
Wir können oben sehen, dass es 9 Zellen mit gleichmäßigen Abständen gibt. In diesem Fall ist die Höhe einer Zelle gleich der Anzahl der Beobachtungen, die in diese Zelle fallen.
Wir können zusätzliche Parameter übergeben, um das Aussehen unserer Darstellung zu steuern. Sie können diese in der Hilfe nachlesen ?hist
.
Einige der häufig verwendeten sind main
, um den Titel anzugeben, xlab
und ylab
, um Beschriftungen für die Achsen bereitzustellen, xlim
und ylim
, um den Bereich der Achsen anzugeben, col
, um die Farbe zu definieren usw.
Zusätzlich können wir mit dem Argument freq=FALSE
die Wahrscheinlichkeitsverteilung statt der Häufigkeit erhalten.
Beispiel 2: Histogramm mit hinzugefügten Parametern
# 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)
Beachten Sie, dass die y-Achse mit Dichte statt mit Häufigkeit beschriftet ist. In diesem Fall ist die Gesamtfläche des Histogramms gleich 1.
Rückgabewert von hist()
Die hist()
-Funktion liefert eine Liste mit 6 Komponenten.
> 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"
Wir sehen, dass ein Objekt der Klasse histogram
zurückgegeben wird, das hat:
-
breaks
-Stellen, an denen die Brüche auftreten, -
counts
die Anzahl der Beobachtungen, die in diese Zelle fallen, -
density
die Dichte der Zellen,mids
die Mittelpunkte der Zellen, -
xname
der Name des x-Arguments und -
equidist
ein logischer Wert, der angibt, ob die Brüche gleichmäßig verteilt sind oder nicht.
Wir können diese Werte für die weitere Verarbeitung verwenden.
Im folgenden Beispiel verwenden wir die Rückgabewerte, um die Zählungen mit der Funktion text()
über jeder Zelle zu platzieren.
Beispiel 3: Histogramm-Rückgabewerte für Beschriftungen mit text()
h <- hist(Temperature,ylim=c(0,40))text(h$mids,h$counts,labels=h$counts, adj=c(0.5, -0.5))
Anzahl der Brüche festlegen
Mit dem Argument breaks
können wir die Anzahl der Zellen angeben, die wir im Histogramm haben möchten. Diese Zahl ist jedoch nur ein Vorschlag.
R berechnet die beste Anzahl von Zellen unter Berücksichtigung dieses Vorschlags. Im Folgenden sehen Sie zwei Histogramme zu denselben Daten mit unterschiedlicher Zellenanzahl.
Beispiel 4: Histogramm mit verschiedenen Unterbrechungen
hist(Temperature, breaks=4, main="With breaks=4")hist(Temperature, breaks=20, main="With breaks=20")
In der obigen Abbildung sehen wir, dass die tatsächliche Anzahl der gezeichneten Zellen größer ist, als wir angegeben hatten.
Wir können auch Unterbrechungspunkte zwischen den Zellen als Vektor definieren. Damit ist es möglich, ein Histogramm mit ungleichen Intervallen zu zeichnen. In diesem Fall ist die Fläche der Zelle proportional zur Anzahl der Beobachtungen, die in diese Zelle fallen.
Beispiel 5: Histogramm mit ungleicher Breite
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))