सवाल बॉक्सप्लॉट मतलब का मूल्य दिखाता है


इस बॉक्सप्लॉट में हम मतलब देख सकते हैं लेकिन हम प्रत्येक बॉक्स प्लॉट के हर माध्य के लिए साजिश पर संख्या मूल्य कैसे प्राप्त कर सकते हैं?

 ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() +
     stat_summary(fun.y=mean, colour="darkred", geom="point", 
                           shape=18, size=3,show_guide = FALSE)

44
2017-11-09 13:28


मूल


लघु, आत्मनिर्भर, पुनरुत्पादित उदाहरण के लिए +1। - Simon O'Hanlon
का डुप्लिकेट stackoverflow.com/q/15660829/1036500 - Ben


जवाब:


सबसे पहले, आप समूह के साथ गणना कर सकते हैं aggregate:

means <- aggregate(weight ~  group, PlantGrowth, mean)

इस डेटासेट का उपयोग किया जा सकता है geom_text:

library(ggplot2)
ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() +
  stat_summary(fun.y=mean, colour="darkred", geom="point", 
               shape=18, size=3,show_guide = FALSE) + 
  geom_text(data = means, aes(label = weight, y = weight + 0.08))

यहाँ, + 0.08 माध्य का प्रतिनिधित्व करने वाले बिंदु के ऊपर लेबल रखने के लिए प्रयोग किया जाता है।

enter image description here


बिना एक वैकल्पिक संस्करण ggplot2:

means <- aggregate(weight ~  group, PlantGrowth, mean)

boxplot(weight ~ group, PlantGrowth)
points(1:3, means$weight, col = "red")
text(1:3, means$weight + 0.08, labels = means$weight)

enter image description here


57
2017-11-09 13:43



+1 - मैंने अभी यह काम किया था और मेरा जवाब और बीएएम अपडेट करने आया था! बहुत बढ़िया। - Simon O'Hanlon
आप टेक्स्ट के आकार को कैसे कम कर सकते हैं? - Martin Velez
इसके अलावा, आप दशमलव की संख्या को कैसे सीमित कर सकते हैं? - Martin Velez
@MartinVelez उदाहरण के लिए, geom_text(data = means, aes(label = round(weight, 1), y = weight + 0.08), size = 3) 1 दशमलव स्थान के साथ छोटे पाठ बनाता है। - Sven Hohenstein
@mad तर्क जोड़ने का प्रयास करें position = position_dodge(width = 3/4) सेवा मेरे stat_summary। - Sven Hohenstein


आप आउटपुट वैल्यू का उपयोग कर सकते हैं stat_summary()

ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) 
+ geom_boxplot() 
+ stat_summary(fun.y=mean, colour="darkred", geom="point", hape=18, size=3,show_guide = FALSE)
+ stat_summary(fun.y=mean, colour="red", geom="text", show_guide = FALSE, 
               vjust=-0.7, aes( label=round(..y.., digits=1)))

18
2018-06-17 14:52



मैं बॉक्सप्लॉट में भी मतलब जोड़ना चाहता हूं। तो, मैं जोड़कर बॉक्स प्लॉट कोड द्वारा संशोधित किया गया stat_summary() और fill=x लेकिन यह त्रुटि हो रही है: Error: Unknown parameters: hape In addition: Warning message:show_guide has been deprecated. Please use show.legend instead.  आपके कोड में क्या गलत है? - Rocky


आप पाठ को रखने के लिए माध्य और समायोजन तर्क की गणना करने के लिए stat_summary के भीतर फ़ंक्शन का भी उपयोग कर सकते हैं, आपको अतिरिक्त फ़ंक्शन की आवश्यकता है लेकिन कोई अतिरिक्त डेटा फ्रेम नहीं है:

fun_mean <- function(x){
  return(data.frame(y=mean(x),label=mean(x,na.rm=T)))}


ggplot(PlantGrowth,aes(x=group,y=weight)) +
geom_boxplot(aes(fill=group)) +
stat_summary(fun.y = mean, geom="point",colour="darkred", size=3) +
stat_summary(fun.data = fun_mean, geom="text", vjust=-0.7)

enter image description here


10
2017-11-11 10:30





Magrittr रास्ता

मुझे पता है कि पहले से ही एक स्वीकार्य उत्तर है, लेकिन मैं इसे मदद के साथ एकल कमांड में करने के लिए एक अच्छा तरीका दिखाना चाहता था magrittr पैकेज।

PlantGrowth %$% # open dataset and make colnames accessible with '$'
split(weight,group) %T>% # split by group and side-pipe it into boxplot
boxplot %>% # plot
lapply(mean) %>% # data from split can still be used thanks to side-pipe '%T>%'
unlist %T>% # convert to atomic and side-pipe it to points
points(pch=18)  %>% # add points for means to the boxplot
text(x=.+0.06,labels=.) # use the values to print text

यह कोड अंक और मूल्यों के रूप में मुद्रित साधनों के साथ एक बॉक्सप्लॉट का उत्पादन करेगा: boxplot with means

मैंने एकाधिक लाइनों पर कमांड को विभाजित किया है, इसलिए मैं प्रत्येक भाग के बारे में टिप्पणी कर सकता हूं, लेकिन इसे ऑनलाइनर के रूप में भी दर्ज किया जा सकता है। आप इसके बारे में और जान सकते हैं सार


0
2018-06-19 10:59