2011-11-15 8 views
8

मैं 2 अलग-अलग डेटा.फ्रेम से व्युत्पन्न geom_bar से बार को ओवरले करने की कोशिश कर रहा हूं।दो 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 

और

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 

पहले साजिश है:

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) 

लेकिन मैं data.frame LMD

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

से दूसरे geom_bar साथ overplot करना चाहते हैं और मैं चाहता हूँ एक किंवदंती है।

उत्तर

17

यहाँ एक उदाहरण है:

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

लेकिन मैं rbind करने के लिए उन्हें सलाह देते हैं और dodging द्वारा यह साजिश:

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

आपको बहुत बहुत – Tali

+0

कर सकते हैं धन्यवाद आप डोड किए गए डेटा को स्थानांतरित करते हैं एक दूसरे को बोव? दो बार प्रकारों के बीच एक नकारात्मक दूरी की तरह? –

+0

@ पीटरपैन आप इसे 'position = "stack" 'के साथ कर सकते हैं। – Reason

संबंधित मुद्दे