2010-08-14 14 views
12

के साथ एक बॉक्स को लेबल करता है क्या आर में बॉक्सप्लॉट बनाने का कोई तरीका है जो बॉक्स (कहीं) "एन = (नमूना आकार)" के साथ प्रदर्शित होगा? Varwidth तार्किक नमूना आकार के आधार पर बॉक्स की चौड़ाई समायोजित करता है, लेकिन यह विभिन्न भूखंडों के बीच तुलना की अनुमति नहीं देता है।आर में एक बॉक्सप्लॉट बनाएं जो नमूना आकार (एन)

Fwiw, मैं निम्नलिखित फैशन, जहां 'f1' एक कारक है में boxplot आदेश का उपयोग कर रहा हूँ:

boxplot(xvar ~ f1, data=frame, xlab="input values", horizontal=TRUE) 

उत्तर

23

यहाँ कुछ ggplot2 कोड है। यह नमूना आकार पर नमूना आकार प्रदर्शित करने जा रहा है, लेबल बहुआयामी बनाने!

सबसे पहले, एक सरल समारोह fun.data

give.n <- function(x){ 
    return(c(y = mean(x), label = length(x))) 
} 

के लिए अब, हीरे डेटा

ggplot(diamonds, aes(cut, price)) + 
    geom_boxplot() + 
    stat_summary(fun.data = give.n, geom = "text") 

साथ प्रदर्शित करने के लिए आप इसे अच्छे लग रहे बनाने के लिए पाठ का आकार के साथ खेलने के लिए हो सकता है, लेकिन अब आपके पास नमूना आकार के लिए एक लेबल है जो स्काई की भावना भी देता है।

+0

बहुत अच्छा काम करता है, और सुंदर दिखता है। धन्यवाद! –

+3

क्या होगा यदि मैं 'geom_boxplot (aes (fill = factor (f2)) के साथ ggplot-ing कर रहा हूं)' जहां f2 एक दूसरा कारक है - क्या stat_summary पर एक भिन्नता है जो 'उप बॉक्स' को अपने स्वयं के एन प्राप्त करने की अनुमति देती है ? –

+2

स्पेस को बचाने के लिए उदाहरण कोड: 'ggplot (mpg, aes (निर्माता, hwy, fill = factor (वर्ष)) + geom_boxplot() + stat_summary (fun.data = give.n, geom = "text", position = position_dodge (ऊंचाई = 0, चौड़ाई = 0.75), आकार = 3) 'आपको 'position_dodge()' – JoFrhwld

9

आप n प्रत्येक कारक नाम के आगे लिखने के लिए names पैरामीटर का उपयोग कर सकते हैं।

आप इस छोटे चाल इस्तेमाल कर सकते हैं आप अपने आप को n गणना करने के लिए नहीं करना चाहते हैं:

# Do the boxplot but do not show it 
b <- boxplot(xvar ~ f1, data=frame, plot=0) 
# Now b$n holds the counts for each factor, we're going to write them in names 
boxplot(xvar ~ f1, data=frame, xlab="input values", names=paste(b$names, "(n=", b$n, ")")) 
+0

सुंदर चापलूसी! चाल के लिए धन्यवाद। –

+0

मैं प्रत्येक बार के लिए बॉक्स प्लॉट क्षैतिज पट्टी के ऊपर एन संख्या कैसे डाल सकता हूं? – Dinesh

+0

@ दिनेश: 'टेक्स्ट' फ़ंक्शन का उपयोग करें। आप 'आँकड़े 'पैरामीटर को देखकर औसत का मूल्य पा सकते हैं। उदाहरण के लिए: 'टेक्स्ट (seq_along (f1), b $ आँकड़े [3,], b $ n)' – nico

0

gplots पैकेज boxplot.n, जो प्रलेखन के अनुसार एक boxplot टिप्पणियों की संख्या के साथ एनोटेट पैदा करता है प्रदान करता है।

4

n बार के ऊपर, आप के साथ boxplot द्वारा प्रदान की stat विवरण text इस्तेमाल कर सकते हैं के रूप में

b <- boxplot(xvar ~ f1, data=frame, plot=0) 
text(1:length(b$n), b$stats[5,]+1, paste("n=", b$n)) 

ख के आँकड़े क्षेत्र एक मैट्रिक्स है इस प्रकार है पर पाने के लिए, प्रत्येक स्तंभ के चरम शामिल निचला व्हिस्कर, निचला हिंग, औसत, ऊपरी कंगन और एक समूह/साजिश के लिए ऊपरी व्हिस्कर का चरम।

+1

पर उत्तर देखें धन्यवाद, एक जादू की तरह काम करता है –

0

मैंने Envstats पैकेज का उपयोग करके एक वर्कअराउंड निकाला। इस पैकेज, डाउनलोड किया जा करने के लिए लोड और उपयोग से सक्रिय जरूरत:

library(Envstats) 

stripChart (stripchart से भिन्न) ऐसी n मूल्यों के रूप में कुछ मूल्यों चार्ट में जोड़ने के लिए है। सबसे पहले मैंने अपना बॉक्सप्लॉट प्लॉट किया। तब मैंने स्ट्रिप चार्ट में add = t का उपयोग किया। जाहिर है, स्ट्रिप चार्ट कोड में कई चीजें छिपी हुई थीं ताकि वे बॉक्सप्लॉट पर दिखाई न दें। यहां अधिकांश कोड छिपाने के लिए स्ट्रिप चार्ट के लिए उपयोग किया गया कोड है।

n मूल्यों को दिखाने के लिए एकीकृत stripChart साथ Boxplot:

stripChart(data.frame(T0_G1,T24h_G1,T96h_G1,T7d_G1,T11d_G1,T15d_G1,T30d_G1), show.ci=F,axes=F,points.cex=0,n.text.line=1.6,n.text.cex=0.7,add=T,location.scale.text="none") 

तो boxplot

boxplot(data.frame(T0_G1,T24h_G1,T96h_G1,T7d_G1,T11d_G1,T15d_G1,T30d_G1),main="All Rheometry Tests on Egg Plasma at All Time Points at 0.1Hz,0.1% and 37 Set 1,2,3", names=c("0h","24h","96h","7d ", "11d", "15d", "30d"),boxwex=0.6,par(mar=c(8,4,4,2))) 

फिर stripChart

stripChart(data.frame(T0_G1,T24h_G1,T96h_G1,T7d_G1,T11d_G1,T15d_G1,T30d_G1), show.ci=F,axes=F,points.cex=0,n.text.line=1.6,n.text.cex=0.7,add=T,location.scale.text="none") 

तुम हमेशा संख्या के उच्च समायोजित कर सकते हैं (एन मूल्यों) ताकि वे जहां चाहें फिट हो जाएं।

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