2011-11-15 19 views
8

Sto provando a sovrapporre 2 barre da geom_bar derivate da 2 data.frames separati.Come sovrapporre due 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 

e

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 

La prima trama è:

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) 

ma voglio overplot con un altro geom_bar da data.frame LMD

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

e voglio avere una leggenda

risposta

17

Ecco un esempio:

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

ma vi consiglio di rbind loro e tracciarla da schivare:

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

ringrazio molto – Tali

+0

può muovi i dati schivati ​​a bove l'un l'altro? come una distanza negativa tra i due tipi di barre? –

+0

@PeterPan Puoi farlo con 'position =" stack "'. – Reason

Problemi correlati