2010-06-30 10 views
6

Ajusté un modelo de conteo a un vector de datos reales y me gustaría trazar lo real y lo predicho como un gráfico de barras agrupado (esquivado). Como este es un modelo de recuento, los datos son discretos (X = x de 0 a 317). Como estoy ajustando un modelo, solo tengo datos tabulados para los valores predichos.Gráfico de barras agrupado con ggplot2 y datos ya tabulados

Así es como se ve mi marco de datos original:

actual predicted 
1 3236 3570.4995 
2 1968 1137.1202 
3 707 641.8186 
4 302 414.8763 
5 185 285.1854 
6 104 203.0502 

que transforma los datos que se pintarán con ggplot2:

melted.data <- melt(plot.data) 
melted.data$realization <- c(rep(0:317, times=2)) 
colnames(melted.data)=c('origin','count','realization') 

Así que mi trama de datos ahora se ve así:

head(melted.data) 
    origin count realization 
1 actual 3236   0 
2 actual 1968   1 
3 actual 707   2 
4 actual 302   3 
5 actual 185   4 
6 actual 104   5 
> tail(melted.data) 
     origin  count realization 
631 predicted 1.564673e-27   312 
632 predicted 1.265509e-27   313 
633 predicted 1.023552e-27   314 
634 predicted 8.278601e-28   315 
635 predicted 6.695866e-28   316 
636 predicted 5.415757e-28   317 

Cuando trato de graficar (de nuevo, me gustaría tener el recuento real y predicho - que ya es una pestaña ulados en el Data-- mediante la iluminación discreta), le doy a este comando:

ggplot(melted.data, stat="identity", aes(x=realization, fill=origin)) + geom_bar(position="dodge") 

Sin embargo, parece que el parámetro de estadísticas no es del agrado de ggplot2, ya que no da la altura correcta bar (que sería los de la variable "recuento").

¿Alguna idea?

Gracias,

Roberto.

Respuesta

7

Necesita valores y en la asignación aes si usa stat_identity (columna count). Pruebe lo siguiente:

ggplot(melted.data, aes(x=realization, y=count, fill=origin)) + 
     stat_identity(position="dodge", geom="bar") 

o

ggplot(melted.data, aes(x=realization, y=count, fill=origin)) + 
     geom_bar(position="dodge", stat="identity") 
+0

Sí, sólo tiene que añadir '+ xlim (xmin, xmax)' (con valores apropiados para xmin y xmax) – rcs

+0

Grande, muchas gracias! – Roberto

+0

@rcs: Gracias por esta respuesta. Usando la notación variable anterior, los datos que estoy trazando tienen diferentes números de valores de 'origen'. Cuando solo está presente un valor de 'origen' en una 'realización', entonces se produce una barra "gruesa". Cuando hay dos valores de 'origen', se producen dos barras más estrechas, etc. ¿Hay alguna forma de garantizar que las barras tengan un ancho uniforme? – SabreWolfy

Cuestiones relacionadas