2011-11-15 22 views
8

Estoy tratando de superponer 2 barras de geom_bar derivadas de 2 data.frames separados.¿Cómo superponer dos geom_bar?

dEQ 
    lab perc 
1 lmP 55.9 
2 lmN 21.8 
3 Nt 0.6 
4 expG 5.6 
5 expD 0.0 
6 prbN 11.2 
7 prbP 5.0 

y

LMD 
    lab perc 
1 lmP 16.8 
2 lmN 8.9 
3 Nt 0.0 
4 expG 0.0 
5 expD 0.0 
6 prbN 0.0 
7 prbP 0.0 

El primer argumento es:

p <- ggplot(dEQ, aes(lab, perc)) + 
    xlab(xlabel) + ylab(ylabel) + 
    geom_bar(stat="identity", colour="blue", fill="darkblue") + 
    geom_text(aes(vecX, vecYEQ+1.5, label=vecYlbEQ), data=dEQ, size=8.5) + 
    theme_bw() + 
    opts(axis.text.x = theme_text(size = 20, face = "bold", colour = "black")) + 
    opts(axis.text.y = theme_text(size = 20, face = "bold", colour = "black")) + 
    coord_flip() + 
    scale_y_continuous(breaks=c(0,10,20,30,40,50,60), 
         labels=c("0","","20","","40","","60"), 
         limits = c(0, 64), expand = c(0,0)) 
print(p) 

pero quiero overplot con otro geom_bar de hoja.de.datos LMD

ggplot(LMD, aes(lab, perc)) + 
    geom_bar(stat="identity", colour="blue", fill="red", add=T) 

y quiero tener una leyenda

Respuesta

17

aquí es un ejemplo:

p <- ggplot(NULL, aes(lab, perc)) + 
    geom_bar(aes(fill = "dEQ"), data = dEQ, alpha = 0.5) + 
    geom_bar(aes(fill = "LMD"), data = LMD, alpha = 0.5) 
p 

enter image description here

pero recomiendan a rbind ellos y la trama por esquivar:

dEQ$name <- "dEQ" 
LMD$name <- "LMD" 
d <- rbind(dEQ, LMD) 
p <- ggplot(d, aes(lab, perc, fill = name)) + geom_bar(position = "dodge") 

enter image description here

+0

Muchas gracias – Tali

+0

puede usted mueve los datos esquivados a Bove el uno al otro? como una distancia negativa entre los dos tipos de barras? –

+0

@PeterPan Puedes hacer eso con 'position =" stack "'. – Reason

Cuestiones relacionadas