2012-06-04 13 views
6

मुझे इस तरह की एक साजिश चाहिए कि प्रत्येक पहलू 100% तक पहुंच जाए। अभी समूह एम 0.20 + 0.80 = 1.00 के बजाय 0.05 + 0.25 = 0.30 है।ggplot: दो समूहों की सापेक्ष आवृत्तियों

df <- rbind(
    data.frame(gender=c(rep('M',5)), outcome=c(rep('1',4),'0')), 
    data.frame(gender=c(rep('F',10)), outcome=c(rep('1',7),rep('0',3))) 
) 

df 

ggplot(df, aes(outcome)) + 
    geom_bar(aes(y = (..count..)/sum(..count..))) + 
    facet_wrap(~gender, nrow=2, ncol=1) 

(का उपयोग करते हुए y = ..density .. बदतर परिणाम देता है।)

+0

यहां दिए गए उत्तर सही विधि हैं। ..density .. कई अन्य उत्तरों में प्रदान की गई विधि, http://stackoverflow.com/questions/10064080/plot-relative-frequencies-with-dodged-bar-plots-in-ggplot2, http: // stackoverflow। कॉम/प्रश्न/17368223/ggplot2-बहु-समूह-हिस्टोग्राम-इन-इन-ग्रुप-प्रोपॉर्टन-इन-फ्रीक्वेंसी, http://stackoverflow.com/questions/3695497/ggplot-showing-instead-of-counts- इन-चार्ट-ऑफ-क्लासिकल-वेरिएबल्स वे मान उत्पन्न करते हैं जो अलग-अलग डिग्री के लिए गलत हैं। – russellpierce

उत्तर

9

मैं आमतौर पर बस ggplot2 के बाहर के मान precalculating और stat = "identity" उपयोग करके ऐसा कर:

df1 <- melt(ddply(df,.(gender),function(x){prop.table(table(x$outcome))}),id.vars = 1) 

ggplot(df1, aes(x = variable,y = value)) + 
    facet_wrap(~gender, nrow=2, ncol=1) + 
    geom_bar(stat = "identity") 
+0

यह सही है। मैं अपेक्षाकृत सामान्य प्रकार के चार्ट की तरह दिखने के लिए एक सरल उत्तर की उम्मीद कर रहा हूं। :) – Andrew

+0

@andrew - मैं यह * बहुत * करता हूं। अपने स्वयं के 'geom' को बनाना अपेक्षाकृत आसान है, और यह ggplot2 के लिए निर्मित टूल्स में एक बड़ा जोड़ा होगा। – Chase

+0

@Chase मैं गलत हो सकता था, लेकिन मुझे लगता है कि यह एक नए भूगर्भ से अधिक ले जाएगा क्योंकि (मुझे लगता है) सौंदर्यशास्त्र को चर के लिए मैप किया गया है _before_ पहलू किया जाता है। तो मुझे लगता है कि यह भौगोलिक के ऊपर की ओर एक डिजाइन फीचर तरीका हो सकता है। – joran

16

यहां एक और तरीका है

ggplot(df, aes(outcome)) + 
    geom_bar(aes(y = ..count../sapply(PANEL, FUN=function(x) sum(count[PANEL == x])))) + 
    facet_wrap(~gender, nrow=2, ncol=1) 
+1

क्या एक सुखद हैक! – joran

+0

मुझे यह पसंद है कि यह कैसे छोटा है, लेकिन जब मैं पहलू से स्थिति = चकमा पर स्विच करने का प्रयास करता हूं, तो सभी समूहों (समूहों के बजाय) में ऊंचाई 100% तक पहुंच जाती है – Andrew

+0

मेरी इच्छा है कि मैं और अधिक उठा सकूं। – Eduardo