2016-04-12 33 views
3

Lassen Sie uns sagen, dass ich die folgende Datenrahmen haben:erstellen Histogramm der Zählfrequenzen in ggplot2

d = data.frame(letter = c(
    'a', 'a', 'a', 
    'b', 'b', 'b', 
    'c', 
    'd', 'd', 'd', 'd', 
    'e', 'e', 
    'f', 'f', 'f', 'f', 'f', 'f', 'f', 
    'g')) 

Wie kann ich ggplot2 verwenden, um ein Histogramm zu machen, die nicht zählen, wie oft ein bestimmter Brief auftritt, sondern zählt die Häufigkeit, mit der eine bestimmte Buchstabenhäufigkeit auftritt? In diesem Beispiel:

table(d$letter) 

a b c d e f g 
3 3 1 4 2 7 1 

zwei Buchstaben (c und g) einmal vorkommen, tritt zweimal ein Buchstabe (e), zwei Buchstaben auftreten dreimal usw. Solche, dass Sie eine Zahl entspricht dem Grundstück machen kann:

hist(table(d$letter), right = F, breaks = 6) 

base histogram

Antwort

2

Sie können das Ergebnis von table zu einem Datenrahmen umwandeln und verwenden Sie dann ggplot:

df <- as.data.frame(table(d$letter)) 
ggplot(df, aes(x = Freq)) + 
    geom_histogram(binwidth = 1) 
Diese

enter image description here

funktioniert, weil die Spalte, die die Frequenzen enthält, ist standardmäßig Freq genannt:

head(df) 
## Var1 Freq 
## 1 a 3 
## 2 b 3 
## 3 c 1 
## 4 d 4 
## 5 e 2 
## 6 f 7 

Wenn Sie die Stäbe, die zwischen den ganzen Zahlen haben wollen, können Sie center = 0.5 verwenden, um die Behälter zu zentrieren bei halben Zahlen. Ich benutze auch closed = "left", die in right = FALSEhist() entspricht:

ggplot(df, aes(x = Freq)) + 
    geom_histogram(binwidth = 1, center = 0.5, closed = "left") + 
    scale_x_continuous(breaks = 1:7) 

enter image description here

Verwandte Themen