2012-04-27 31 views
14

que tiene un conjunto de datos de esta manera:barplot usando ggplot2

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

Estoy tratando de dibujar un gráfico de barras para estos datos. Actualmente, puedo hacerlo con barplot:

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

La generación de este gráfico:

Bar plot

Así que mis preguntas son: ¿Puedo usar ggplot2 para dibujar un gráfico de este tipo? Específicamente, ¿cómo uso facetas u otras opciones para dividir el gráfico por días de la semana? En caso afirmativo, ¿cómo lo logro? Además, ¿cómo uso faceta para producir un diseño diferente?

+5

-1 por no hacer una búsqueda de "barplot ggplot2" en el buscador a mano en la parte superior derecha de la pantalla. – Andrie

+1

Intento buscar en google y en este sitio. De hecho, puedo usar ggplot2 para dibujar un gráfico de barras para mis datos originales. Porque ggplot2 puede contar el número por ti. El problema es si ya obtienes los resultados del conteo, ¿cómo usar ggplot2 para dibujar el gráfico de barras como el comando general "barra de navegación"? – boyang

+1

OK, eso es más sensato. Ahora agregue esa información adicional a su pregunta, y cambiaré mi voto negativo. Y también agregue un código de muestra, es decir, muestre lo que ha hecho y dónde se queda atascado. – Andrie

Respuesta

32

Esto se ha pedido muchas veces antes. La respuesta es que debe usar stat="identity" en geom_bar para decirle a ggplot que no resuma sus datos.

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

Cuestiones relacionadas