2012-04-27 22 views
14

Ho una serie di dati come questo:barplot utilizzando ggplot2

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

sto cercando di disegnare un grafico a barre per questi dati. Attualmente, posso farlo con barplot:

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

Generazione di questo grafico:

Bar plot

Quindi le mie domande sono: Posso usare ggplot2 per disegnare un simile grafico? In particolare: come utilizzare la sfaccettatura o altre opzioni per dividere il grafico per giorni della settimana? Se sì, come posso farlo? Inoltre, come posso usare il facet per produrre un layout diverso?

+5

-1 per non fare una ricerca per "barplot ggplot2" nella casella di ricerca a portata di mano in alto a destra dello schermo. – Andrie

+1

Provo a cercare in google e in questo sito. Infatti, posso usare ggplot2 per disegnare il grafico a barre per i miei dati originali. Perché ggplot2 può contare il numero per te. Il problema è che se ottieni già i risultati del conteggio, come utilizzare ggplot2 per disegnare il grafico a barre come il comando generale "barplot"? – boyang

+1

OK, questo è più ragionevole. Ora aggiungi queste informazioni aggiuntive alla tua domanda e io cambierò il mio voto negativo. E aggiungi anche del codice di esempio, cioè mostra cosa hai fatto e dove rimani bloccato. – Andrie

risposta

32

Questo è stato chiesto molte volte prima. La risposta è che devi usare stat="identity" in geom_bar per dire a ggplot di non riepilogare i tuoi dati.

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

Problemi correlati