2012-08-01 10 views
31

मेरे पास एक बहुत ही सरल सवाल है जिससे मुझे दीवार पर अपने सिर को धक्का देना पड़ता है।आर जीजीप्लॉट में हिस्टोग्राम में वाई-अक्ष को सामान्यीकृत करने के लिए

मैं अपने हिस्टोग्राम के वाई-अक्ष को अनुपात (0 से 1) को प्रतिबिंबित करने के लिए स्केल करना चाहता हूं, जो प्रत्येक बिन बनाता है, सलाखों के क्षेत्र को 1 = .. घनत्व का उपयोग करने के बजाय .. करता है, या उच्चतम बार होने वाला 1 होता है, जैसा y = .. ncount .. करता है।

name value 
A 0.0000354 
B 0.00768 
C 0.00309 
D 0.00

मेरी असफल प्रयासों में से एक::

library(ggplot2) 
mydataframe < read.delim(mydata) 
ggplot(mydataframe, aes(x = value)) + 
geom_histogram(aes(x=value,y=..density..)) 

यह मैं क्षेत्र 1 के साथ एक हिस्टोग्राम देता है, लेकिन की ऊंचाइयों

मेरे इनपुट के नाम और मान की एक सूची है, तो इस तरह से प्रारूपित है 2000 और 1000:

try

और y = .. ncount। । मुझे सबसे ज्यादा बार 1.0 के साथ एक हिस्टोग्राम देता है, और आराम करने के लिए यह छोटा:

try

लेकिन मैं पहले बार करना चाहते हैं 0.5 की ऊंचाई है, और अन्य दो 0.25।

आर या तो scale_y_continuous के इन उपयोगों को पहचान नहीं करता है।

scale_y_continuous(formatter="percent") 
scale_y_continuous(labels = percent) 
scale_y_continuous(expand=c(1/(nrow(mydataframe)-1),0) 

किसी भी मदद के लिए धन्यवाद।

उत्तर

46

ध्यान दें कि ..ncount.. अधिकतम 1.0 तक पुन: सहेजता है, जबकि ..count.. गैर स्केल बिन गिनती है।

ggplot(mydataframe, aes(x=value)) + 
    geom_histogram(aes(y=..count../sum(..count..))) 

कौन देता है:

enter image description here

+1

यह वही है जो मैं ढूंढ रहा था। आप बेवकूफ की तरह महसूस करते हैं, और मैं वास्तव में आपके लिए आभारी हूं! –

+6

मुझे नहीं पता था कि ऐसा कुछ करना संभव था। इस टिप के लिए धन्यवाद मैं 'एईएस (वाई = 1-cumsum (.. गिनती ..)/योग (.. गिनती ..) का उपयोग करके एक अस्तित्व/विश्वसनीयता (यानी 1-सीडीएफ) हिस्टोग्राम का उत्पादन करने में सक्षम हूं)। – dnlbrky

11

ggplot2 0.9 के रूप में, फ़ॉर्मेटर कार्यों के कई तराजू पैकेज ले जाया गया है, percent_format() भी शामिल है।

library(ggplot2) 
library(scales) 

mydataframe <- data.frame(name = c("A", "B", "C", "D"), 
          value = c(0.0000354, 0.00768, 0.00309, 0.000123)) 

ggplot(mydataframe) + 
    geom_histogram(aes(x = value, y = ..ncount..)) + 
    scale_y_continuous(labels = percent_format()) 
+0

स्पष्टीकरण के लिए धन्यवाद! मैं सोच रहा था कि मेरे प्रारूप में क्या गलत था ... –

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