2013-11-25 5 views
10

मेरे पास कई अध्ययनों पर डेटा का संग्रह है। प्रत्येक अध्ययन के लिए मुझे लिंग द्वारा एक चर के अर्थ के बारे में दिलचस्पी है, और यदि यह काफी अलग है। प्रत्येक अध्ययन के लिए मेरे पास पुरुषों और महिलाओं दोनों के लिए औसत और 95% आत्मविश्वास अंतराल है। enter image description hereत्रुटि सलाखों के साथ डॉटप्लॉट, दो श्रृंखला, प्रकाश जिटर

मैं dotplots (dotplot, dotplot2, Dotplot) के कई जायके का इस्तेमाल किया है, लेकिन काफी वहाँ नहीं मिला:

मैं करना चाहते हैं क्या यह करने के लिए कुछ इसी तरह है।

DotplotHmisc से Hmisc का उपयोग करके मैं एक श्रृंखला और इसके त्रुटिबारों में कामयाब रहा, लेकिन दूसरी श्रृंखला को जोड़ने के तरीके पर मुझे नुकसान हुआ।

मैंने Dotplot का उपयोग किया और here दिए गए सलाह के बाद त्रुटि बार का ऊर्ध्वाधर समापन प्राप्त किया।

यहाँ कोड का एक काम कर उदाहरण मैं

data<-data.frame(ID=c("Study1","Study2","Study3"),avgm=c(2,3,3.5),avgf=c(2.5,3.3,4)) 
data$lowerm <- data$avgm*0.9 
data$upperm <- data$avgm*1.1 
data$lowerf <- data$avgf*0.9 
data$upperf <- data$avgf*1.1 

# Create the customized panel function 
mypanel.Dotplot <- function(x, y, ...) { 
    panel.Dotplot(x,y,...) 
    tips <- attr(x, "other") 
    panel.arrows(x0 = tips[,1], y0 = y, 
       x1 = tips[,2], y1 = y, 
       length = 0.05, unit = "native", 
       angle = 90, code = 3) 
} 

library(Hmisc) 
Dotplot(data$ID ~ Cbind(data$avgm,data$lowerm,data$upperm), col="blue", pch=20, panel = mypanel.Dotplot, 
     xlab="measure",ylab="study") 

उपयोग कर रहा हूँ इस डेटा के तीन स्तंभों, पुरुषों (avgm) के लिए औसत है, और भूखंडों लोअर और अपर 95% विश्वास अंतराल के लिए बाध्य (है लोअरम और अप्परम)। मेरे पास एक ही अध्ययन के लिए अन्य तीन श्रृंखलाएं हैं, जो महिला विषयों (एवीजीएफ, लोअरफ, अपरफ) के लिए एक ही काम करती हैं।

मैं इस तरह दिखना है परिणाम:

enter image description here

क्या संक्षेप में याद आ रही है,:

  1. साधन और विश्वास के अंतराल पर परिभाषित के साथ एक दूसरी श्रृंखला (avgf) जोड़ने एक ही अध्ययन के लिए तीन अन्य चर

  2. कुछ लंबवत जिटर जोड़ना ताकि वे शीर्ष पर न हों दूसरा लेकिन पाठक दोनों ओवरलैप होने पर भी देख सकते हैं।

+2

अपने कोड दिखाने करें ... – Thomas

+0

धन्यवाद, कोड गयी। यह तब नहीं चलता है जब दुर्भाग्य से मूल लेखकों के साथ समझौतों के कारण मूल डेटा साझा नहीं किया जा सकता है। – PaoloCrosetto

+1

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

उत्तर

8

दुर्भाग्य से मैं Dotplot के साथ मदद नहीं कर सकता, लेकिन मैं ggplot का उपयोग कर यह काफी सरल लगता है। आपको बस थोड़ा डेटा पुनर्व्यवस्थित करने की आवश्यकता है।

library(ggplot2) 
# grab data for males 
df_m <- data[ , c(1, 2, 4, 5)] 
df_m$sex <- "m" 
names(df_m) <- c("ID", "avg", "lower", "upper", "sex") 
df_m 

# grab data for females 
df_f <- data[ , c(1, 3, 6, 7)] 
df_f$sex <- "f" 
names(df_f) <- c("ID", "avg", "lower", "upper", "sex") 
df_m 

# bind the data together 
df <- rbind(df_m, df_f) 

# plot 
ggplot(data = df, aes(x = ID, y = avg, ymin = lower, ymax = upper, colour = sex)) + 
    geom_point(position = position_dodge(width = 0.2)) + 
    geom_errorbar(position = position_dodge(width = 0.2), width = 0.1) + 
    coord_flip() + 
    scale_colour_manual(values = c("blue", "red")) + 
    theme_classic() 

enter image description here

# if you want horizontal grid lines you may change the last line with: 
    theme_bw() + 
    theme(panel.grid.major.y = element_line(colour = "grey", linetype = "dashed"), 
     panel.grid.major.x = element_blank(), 
     panel.grid.minor.x = element_blank()) 
+0

उत्तर के लिए धन्यवाद @ हेनरिक। यह एक बहुत साफ समाधान है। मुझे उम्मीद है कि मुझे डॉटप्लॉट से भी एक जवाब मिल जाएगा क्योंकि मैं इसे एक और डॉटप्लॉट के साथ भी रखना चाहता हूं और मुझे लगातार दिखने और महसूस करना अच्छा लगेगा। धन्यवाद। – PaoloCrosetto

+0

मैं यूर कोड का उपयोग कर समाप्त हुआ (और ggplot2 के बारे में बहुत कुछ सीख रहा हूं)। आपके उत्तर के लिए धन्यवाद! – PaoloCrosetto

+0

@ हेनरिक इस उत्तर के लिए धन्यवाद! –

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