2013-02-19 4 views
16

यह मूल रूप से यहां पूछे गए प्रश्न का एक दोहराव है: Indicating the statistically significant difference in bar graph लेकिन पाइथन के बजाय आर के लिए पूछा।बार ग्राफ़ में सांख्यिकीय रूप से महत्वपूर्ण अंतर को इंगित करना आर

मेरा प्रश्न बहुत आसान है। यदि मैं संभव हो तो ggplot2 का उपयोग करके आर में बारप्लॉट का उत्पादन करना चाहता हूं, विभिन्न बारों के बीच महत्वपूर्ण अंतर के संकेत के साथ, उदाहरण के लिए इस तरह कुछ उत्पन्न करें। मेरे पास चारों ओर एक खोज है लेकिन एक ही सवाल पूछने के लिए एक और सवाल नहीं मिल रहा है।

bar plot showing error bars and sig. diff marking beween bars

+0

तो केवल निकटवर्ती कॉलम? ए-सी, बी-डी या ए-डी के लिए कोई पी मूल्य नहीं है? –

+0

कष्टप्रद पर्याप्त (आपकी गलती नहीं), मेरी स्थानीय फ़ायरवॉल में कुछ आपकी छवि को मार रहा है। क्या आप एक लिंक पोस्ट कर सकते हैं? देरी के लिए –

+0

माफ़ी। यहां छवि: http://i.stack.imgur.com/3I6El.jpg –

उत्तर

15

आप geom_path() और annotate() का उपयोग समान परिणाम प्राप्त कर सकते हैं। इस उदाहरण के लिए आपको उपयुक्त स्थिति निर्धारित करना है। geom_path() में कनेक्टिंग लाइनों के लिए उन छोटे टिक प्राप्त करने के लिए चार नंबर प्रदान किए जाते हैं।

df<-data.frame(group=c("A","B","C","D"),numb=c(12,24,36,48)) 
g<-ggplot(df,aes(group,numb))+geom_bar(stat="identity") 
g+geom_path(x=c(1,1,2,2),y=c(25,26,26,25))+ 
    geom_path(x=c(2,2,3,3),y=c(37,38,38,37))+ 
    geom_path(x=c(3,3,4,4),y=c(49,50,50,49))+ 
    annotate("text",x=1.5,y=27,label="p=0.012")+ 
    annotate("text",x=2.5,y=39,label="p<0.0001")+ 
    annotate("text",x=3.5,y=51,label="p<0.0001") 

enter image description here

+0

धन्यवाद बहुत अधिक होने की उम्मीद - ठीक है यह थोड़ा सा है, लेकिन यह वही है जो मैं चाहता हूं! मुझे लगता है कि ऐसा करने के लिए कोई आसानी से उपलब्ध नहीं है, सामान्य (स्वचालित!) तरीका –

+0

ओओएफ, फ़ेसटिंग का उपयोग करते समय geom_path को नियंत्रित करने का कोई तरीका? –

+0

@JimBo फिर आपको geom_path() मानों के लिए डेटा फ्रेम की आवश्यकता होगी और इस डेटा फ्रेम में आपको समान नाम और स्तर के साथ कॉलम भी शामिल करना होगा जैसा कि पहलू के लिए उपयोग किया जाएगा। –

3

मैं ऊपर से सुझाव विधि का इस्तेमाल किया है, लेकिन मैं व्याख्या समारोह geom_path समारोह से लाइनों बनाने के लिए आसान पाया। बस "टेक्स्ट" के बजाय "सेगमेंट" का उपयोग करें। आपको सेगमेंट द्वारा चीज़ों को तोड़ना होगा और प्रत्येक लाइन सेगमेंट के लिए एक्स और वाई मानों को शुरू करना और समाप्त करना होगा। 3 लाइनों क्षेत्रों बनाने के लिए

उदाहरण:

annotate("segment", x=c(1,1,2),xend=c(1,2,2), y= c(125,130,130), yend=c(130,130,125)) 
11

मुझे पता है कि यह एक पुराने सवाल और Didzis Elferts द्वारा जवाब है पहले से ही समस्या के लिए एक समाधान प्रदान करता है। लेकिन मैं हाल ही में एक ggplot-विस्तार है जो जोड़ने महत्व सलाखों के पूरी प्रक्रिया को सरल बनाया:

library(ggplot2) 
library(ggsignif) 

ggplot(iris, aes(x=Species, y=Sepal.Length)) + 
    geom_boxplot() + 
    geom_signif(comparisons = list(c("versicolor", "virginica")), 
       map_signif_level=TRUE) 

Boxplot with significance bar: उबाते geom_path और annotate जोड़ने अपने भूखंड के लिए करने के बजाय ggsignif

तुम सिर्फ एक परत geom_signif जोड़ने

पैकेज का पूरा दस्तावेज CRAN पर उपलब्ध है।

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