2016-07-12 4 views
1

Die Daten, die ich bereits erhalten habe, haben die Gesamtanzahl für die Kategorien. Ich versuche, ein Histogramm der Anzahl der Häuser für jedes com und Alter zu machen, wo Häuser die Gesamtzahl für diese Kategorie ist.Histogramm nach Kategorien mit Zählern

Com<-c("Newport", "Newport", "Newport", "Newport", "Newport", "Newport", "Topeka", "Topeka", "Topeka", "Topeka", "Topeka", "Topeka", "Missoula", "Missoula", "Missoula", "Missoula", "Missoula", "Missoula" ) 
Age<-c("1970s", "1960s", "1950s", "1940s", "1940_earlier", "1990s", "1970s", "1960s", "1950s", "1940s", "1940_earlier", "1990s", "1970s", "1960s", "1950s", "1940s", "1940_earlier", "1990s") 
Houses<-c( 11, 6, 3, 0, 0, 21, 44, 0, 3, 3, 25, 20, 0, 51, 236, 192, 312, 299) 
df=data.frame(Com,Age,Houses) 

So df sind die Daten

histogram(~ Age | Com, data=df) 

ich auch

install.packages("ggplot2") 
library(ggplot2) 
g <- ggplot(df$counts, aes(df$Age)) 
g + geom_bar() 

Auch

barplot(prop.table(table(df$Age))) 

versucht haben Und schließlich

p <- ggplot(data = df, aes(x=Age)) 
p <- p + geom_histogram(aes(weights=Houses, fill=Com)) 
p <- p + scale_fill_brewer(palette="Set3") 
p <- p + facet_wrap(~ Com, ncol=1) 
p 

Hier sind meine R Versionsinformationen:

R.Version() 

$platform 
[1] "x86_64-w64-mingw32" 
$arch 
[1] "x86_64" 
$os 
[1] "mingw32" 
$system 
[1] "x86_64, mingw32" 
$status 
[1] "" 
$major 
[1] "3" 
$minor 
[1] "3.0" 
$year 
[1] "2016" 
$month 
[1] "05" 
$day 
[1] "03" 
$`svn rev` 
[1] "70573" 
$language 
[1] "R" 
$version.string 
[1] "R version 3.3.0 (2016-05-03)" 
$nickname 
[1] "Supposedly Educational" 
+0

Was ist das Ergebnis Sie bekommen und was ist das Ergebnis Sie erwarten? –

+0

Benötigen Sie Rohdaten für Histogramme. Und das ist sowieso kein Histogramm. –

Antwort

1

Wenn mit Summen mit geom_bar() in ggplot2, die bereits berechnet wurde (und nicht um Fälle zu zählen oder die Summe), müssen Sie stat="identity" angeben. Wie wäre es mit

g0 <- ggplot(df,aes(Age,Houses))+ 
    geom_bar(stat="identity")+ 
    facet_wrap(~Com) 
print(g0) 

? oder

ggplot(df,aes(Age,Houses))+ 
    geom_bar(stat="identity")+ 
    coord_flip()+ 
    facet_wrap(~Com,ncol=1) 
1

Die Gitterfunktion ist barchart:

library(lattice) 
barchart(Houses ~ Age ,group=Com, data=df) 

Die Basis BarPlot Lösung erfordert, dass die Daten werden in einer Matrix, eine Tabelle oder xtabs Objekt. Durch defatul erhalten Sie einen stacke Balkendiagramm, aber wenn Sie wnat das gleiche wie der Gittercode über Sie fügen die neben Argumente:

barplot(xtabs(Houses~Com+Age, data=df), beside=TRUE)