2012-04-27 15 views
14

Ich habe einen Datensatz wie folgt aus:BarPlot mit ggplot2

cars trucks suvs 
1   2 4 
3   5 4 
6   4 6 
4   5 6 
9   12 16 

Ich versuche, ein Balkendiagramm für diese Daten zu ziehen. Derzeit kann ich es mit barplot tun:

barplot(as.matrix(autos_data), main="Autos", 
     ylab= "Total",beside=TRUE, col=rainbow(5)) 

Die Erzeugung dieser Graph:

Bar plot

Also meine Fragen sind: Kann ich ggplot2 verwenden einen solchen Graphen zu zeichnen? Insbesondere - wie verwende ich Facetting oder andere Optionen, um die Grafik nach Wochentagen zu teilen? Wenn ja, wie erreiche ich das? Wie verwende ich Facette, um ein anderes Layout zu erstellen?

+5

-1 für nicht eine Suche nach "BarPlot ggplot2" im praktischen Suchfeld in der oberen rechten Ecke des Bildschirms zu tun. – Andrie

+1

Ich versuche in Google und auf dieser Seite zu suchen. Tatsächlich kann ich mit ggplot2 ein Balkendiagramm für meine Originaldaten zeichnen. Weil ggplot2 die Nummer für Sie zählen kann. Das Problem ist, wenn Sie bereits die Anzahl der Ergebnisse erhalten, wie Sie mit ggplot2 ein Balkendiagramm zeichnen, ähnlich wie mit dem allgemeinen "Barplot" -Befehl? – boyang

+1

OK, das ist sinnvoller. Fügen Sie diese zusätzliche Information zu Ihrer Frage hinzu, und ich werde meinen Downvote ändern. Fügen Sie auch einen Beispielcode hinzu, d. H. Zeigen Sie, was Sie getan haben und wo Sie stecken bleiben. – Andrie

Antwort

32

Dies wurde schon oft gefragt. Die Antwort ist, dass Sie stat="identity" in geom_bar verwenden müssen, um ggplot zu sagen, um Ihre Daten nicht zusammenzufassen.

dat <- read.table(text=" 
cars trucks suvs 
1 2 4 
3 5 4 
6 4 6 
4 5 6 
9 12 16", header=TRUE, as.is=TRUE) 
dat$day <- factor(c("Mo", "Tu", "We", "Th", "Fr"), 
      levels=c("Mo", "Tu", "We", "Th", "Fr")) 

library(reshape2) 
library(ggplot2) 

mdat <- melt(dat, id.vars="day") 
head(mdat) 
ggplot(mdat, aes(variable, value, fill=day)) + 
    geom_bar(stat="identity", position="dodge") 

enter image description here

Verwandte Themen