पहला, नमूना डेटा प्रदान नहीं किया गया है, मेरा अपना नमूना डेटा बनाया गया है। उन डेटा पहले से ही संक्षेप (स्तरों में से प्रत्येक के संयोजन में केवल एक मूल्य नहीं होता है।
set.seed(1)
df<-data.frame(expand.grid(c("Control","Effect"),c("Self","Other"),c("Type1","Type2")),
runif(8,0,1))
colnames(df)<-c("Treatment","Group","Type","value")
df
Treatment Group Type value
1 Control Self Type1 0.2655087
2 Effect Self Type1 0.3721239
3 Control Other Type1 0.5728534
4 Effect Other Type1 0.9082078
5 Control Self Type2 0.2016819
6 Effect Self Type2 0.8983897
7 Control Other Type2 0.9446753
8 Effect Other Type2 0.6607978
अब आप लाइनों के पदों के लिए दो नए मान जोड़ने के लिए की जरूरत है। ymin
मूल्य मूल मूल्य के साथ साथ छोटे निरंतर है। ymax
मूल्य प्रत्येक पहलू y स्थिति में प्रत्येक पहलू (Treatment
और Type
ग्रुपिंग के रूप में उपयोग करते हुए) के लिए गणना की जाती है और यह पहलू में अधिक से अधिक मूल्य के साथ साथ कुछ स्थिर है।
library(plyr)
df<-ddply(df,.(Treatment,Type),transform,ymax=max(value)+0.2)
df$ymin<-df$value+0.05
df
Treatment Group Type value ymax ymin
1 Control Self Type1 0.2655087 0.7728534 0.3155087
2 Control Self Type2 0.2016819 1.1446753 0.2516819
3 Control Other Type1 0.5728534 0.7728534 0.6228534
4 Control Other Type2 0.9446753 1.1446753 0.9946753
5 Effect Self Type1 0.3721239 1.1082078 0.4221239
6 Effect Self Type2 0.8983897 1.0983897 0.9483897
7 Effect Other Type1 0.9082078 1.1082078 0.9582078
8 Effect Other Type2 0.6607978 1.0983897 0.7107978
दूसरा डेटा फ्रेम लेबल के लिए किया जाता है। यहाँ फिर से मूल है ymax
मूल्य प्लस कुछ स्थिर और lab
में वे लेबल शामिल हैं जिन्हें आपको प्रदर्शित करने की आवश्यकता है।
df.names<-ddply(df,.(Treatment,Type),summarise,ymax=ymax[1]+0.1)
df.names$lab<-c("p=0.46","**","***","*")
df.names
Treatment Type ymax lab
1 Control Type1 0.8728534 p=0.46
2 Control Type2 1.2446753 **
3 Effect Type1 1.2082078 ***
4 Effect Type2 1.1983897 *
के रूप में अब df
पहले से ही सारांशित किया गया है मूल्य उपयोग stat_summary()
के बजाय geom_bar(stat="identity")
। अतिरिक्त लाइनों को दो geom_segment()
कॉल के साथ जोड़ा जाता है - पहले एक प्लॉट लंबवत रेखाएं और दूसरा क्षैतिज रेखा जोड़ता है। geom_text()
लाइनों के ऊपर लेबल जोड़ता है। आपके धैर्य, Didzis के लिए
ggplot(df, aes(Group,value,fill=Group)) +
geom_bar(stat="identity") + facet_grid(Type~Treatment) +
theme(legend.position="none")+
geom_segment(aes(x=Group,xend=Group,y=ymin,yend=ymax))+
geom_segment(aes(x="Self",xend="Other",y=ymax,yend=ymax))+
geom_text(data=df.names,aes(x=1.5,y=ymax,label=lab),inherit.aes=FALSE)
बहुत धन्यवाद। यह मेरे लिए बहुत स्पष्ट और पूर्ण है। –