आर में लेबलिंग बॉक्सप्लाट्स


11

मुझे बिना किसी कुल्हाड़ियों के एक बॉक्सप्लॉट बनाने और इसे वर्तमान प्लॉट (आरओसी वक्र) में जोड़ने की आवश्यकता है, लेकिन मुझे बॉक्सप्लेट में अधिक पाठ जानकारी जोड़ने की आवश्यकता है: न्यूनतम और अधिकतम के लिए लेबल। कोड की वर्तमान रेखा नीचे है (वर्तमान ग्राफ भी)।

सहायता के लिए बहुत बहुत धन्यवाद।

boxplot(data, horizontal = TRUE, range = 0, axes=FALSE, col = "grey", add = TRUE)

अन्य समाधान लाइन को 0 से 1 (एक्स-एक्सिस के बजाय) से जोड़ा जाता है, लेकिन मैं चाहता हूं कि यह केंद्रीय लाइन से गुजरे ... उदाहरण के लिए इस ग्राफिक की तरह

यहाँ छवि विवरण दर्ज करें

जवाबों:


9

मुझे लगता है कि आप पाएंगे कि यह आपके हाथ से बने आरेख के समान है।

data    <- c(0.4, 0.7, 0.75, 0.82, 0.9)
endaxis <- c(0, 1)  # endpoints of axis
datamm  <- c(min(data), max(data))
boxplot(data, horizontal = TRUE, range = 0, ylim = endaxis,
                    axes = FALSE, col = "grey", add = FALSE)
arrows(endaxis, 1,  datamm, 1,  code = 1, angle = 90, length = 0.1)
valuelabels <- c(endaxis[1], round(fivenum(data)[2], digits = 2) ,
                 round(fivenum(data)[4], digits = 2), endaxis[2]  ) 
text(x = valuelabels, y = c(1.05, 1.25, 1.25, 1.05), labels = valuelabels)

मूल्य लेबलों के साथ आर बॉक्सप्लाट

इसे करने के बेहतर तरीके हैं। आपको अपने आरओसी प्लॉट को बदलने के लिए इसे अनुकूलित करने की आवश्यकता हो सकती है, जिसमें परिवर्तन भी शामिल हैadd = FALSE


1
ठीक है, आपकी प्रतिक्रिया ओपी द्वारा पूछे जाने के करीब है (इसलिए मैंने +1 किया है)। हालाँकि, मुझे ऐसा लगता है कि यह कोई बॉक्सप्लाट नहीं है, या कम से कम यह संभावित आउटलाइंग वैल्यू को दर्शाने में अपनी रुचि को ढीला करता है। ध्यान दें, आप बॉक्सप्लॉट को थोड़ा और कस्टमाइज़ कर सकते हैं ( parsइसके पहलू अनुपात को कम करने के लिए तर्क देखें ( boxwex) और मूंछ के आकार ( staplewex))।
chl

8

स्टैंडअलोन संस्करण के लिए कुछ इस तरह का प्रयास करें:

bxp <- boxplot(rnorm(100), horizontal=TRUE, axes=FALSE)
mtext(c("Min","Max"), side=3, at=bxp$stats[c(1,5)], line=-3)

ध्यान दें कि आप कॉल करते समय कुछ जानकारी प्राप्त कर सकते हैं boxplot, विशेष रूप से "पांच नंबर"।

यदि आप चाहते हैं कि इसे किसी अन्य ग्राफ़िक पर सुपरइम्पोज़ किया जाए, तो उपयोग करें add=Tलेकिन इसके mtextद्वारा प्रतिस्थापित करें text; आपको एक मान सेट करने की आवश्यकता होगी (जो आपके द्वारा दूसरे ग्राफ़िक को प्लॉट करने के तरीके पर निर्भर करता है)।y

जॉन मेनडॉनल्ड द्वारा एक और पूर्ण उदाहरण दिया गया था (कोड उसकी वेबसाइट पर होना चाहिए):

यहाँ छवि विवरण दर्ज करें


3

पूरी तरह से अनुकूलन ggplot2 boxplot ...

#bootstrap
data <- data.frame(value=rnorm(100,mean = 0.5, sd = 0.2),group=0)
#processing
metaData <- ddply(data,~group,summarise,
            mean=mean(data$value),
			sd=sd(data$value),
            min=min(data$value),
			max=max(data$value),
            median=median(data$value),
			Q1=0,Q3=0
			)
bps <- boxplot.stats(data$value,coef=1.5) 
metaData$min <- bps$stats[1] #lower wisker
metaData$max <- bps$stats[5] #upper wisker
metaData$Q1 <- bps$stats[2] # 1st Quartile
metaData$Q3 <- bps$stats[4] # 3rd Quartile

#adding outliers
out <- data.frame() #initialising storage for outliers
if(length(bps$out) > 0){
	for(n in 1:length(bps$out)){
		pt <-data.frame(value=bps$out[n],group=0) 
		out<-rbind(out,pt) 
	}
}
#adding labels
labels <-data.frame(value=metaData$max, label="Upper bound")
labels <-rbind(labels,data.frame(value=metaData$min, label="Lower bound"))
labels <-rbind(labels,data.frame(value=metaData$median, label="Median"))
labels <-rbind(labels,data.frame(value=metaData$Q1, label="First quartile"))
labels <-rbind(labels,data.frame(value=metaData$Q3, label="Third quartile"))

#drawing
library(ggplot2)
p <- ggplot(metaData,aes(x=group,y=mean))
p <- p + geom_segment(aes(x=c(0.1,0,0.1),y=c(0,0,1),xend=c(0,0,-0.1),yend=c(0,1,1)))
p <- p + geom_text(aes(y=c(0,1),label=c(0,1),x=0.2))
p <- p + geom_errorbar(aes(ymin=min,ymax=max),linetype = 1,width = 0.5) #main range
p <- p + geom_linerange(aes(ymin=min,ymax=max),linetype = 1,width = 0, color="white")# white line range
p <- p + geom_linerange(aes(ymin=min,ymax=max),linetype = 2)    #main range dotted
p <- p + geom_crossbar(aes(y=median,,ymin=Q1,ymax=Q3),linetype = 1,fill='white') #box
if(length(out) >0) p <- p + geom_point(data=out,aes(x=group,y=value),shape=4) # drawning outliers if any
p <- p + scale_x_discrete(breaks=c(0))
p <- p + scale_y_continuous(name= "Value")
p <- p + geom_text(data=labels,aes(x=0.5,y=value,label=round(value,2)),colour="black",angle=0,hjust=0.5, vjust=0.5,size=3)

p <- p + opts(panel.background = theme_rect(fill = "white",colour = NA)) 
p <- p + opts(panel.grid.minor = theme_blank(), panel.grid.major = theme_blank())
p <- p + opts(axis.title.x=theme_blank())
p <- p + opts(axis.text.x = theme_blank())
p <- p + opts(axis.title.y=theme_blank())
p <- p + opts(axis.text.y = theme_blank())

p + coord_flip()

परिणाम:

यहाँ छवि विवरण दर्ज करें

... कोड शायद थोड़ा बदसूरत है लेकिन सही तरीके से काम करता है।


2

यहाँ आपके समाधान का मेरा कार्यान्वयन है। मैंने तय किया है कि माध्य मान को मैप न करें, बहुत जगह नहीं बची है। इसके अलावा 0 से 1 तक की रेखा विषम लगती है। सभी का बहुत बहुत धन्यवाद।

data <- read.table("roc_average.txt")
bxp <- boxplot(data, horizontal = TRUE, range = 0, axes = FALSE, col = "grey", add = TRUE, at = 0.2, varwidth=FALSE, boxwex=0.3)
valuelabels <- c(round(fivenum(data)[2], digits = 2), round(fivenum(data)[4], digits = 2))
text(x = valuelabels, y = c(0.35, 0.35), labels = valuelabels, font = 2)
mtext(c(min(round(data, digits = 2)),max(round(data, digits = 2))), side=1, at=bxp$stats[c(1,5)], line=-3, font = 2)

बॉक्सप्लॉट के साथ आरसी वक्र


बॉक्सप्लॉट AUC को संक्षेप में प्रस्तुत करना है? यदि हां, तो न्यूनतम मान = 0.5 क्यों है?
CHL

हां, अजीब लगता है, क्योंकि कई आरओसी 0.5 से नीचे होने चाहिए। खोदना क्या गलत है ...
व्लादिमीर Chupakhin

यही कारण है कि मैंने 0.5 से नीचे के मूल्यों के लिए आरओसी एयूसी को उल्टा कर दिया है, इसलिए ग्राफिक्स को फिर से बनाया जाना चाहिए। आपका बहुत बहुत धन्यवाद!
व्लादिमीर चुपाखिन

+1 वापस आने के लिए, मैं आपके अपडेट की प्रतीक्षा कर रहा हूं। यदि आप अलग-अलग क्लासिफायर के साथ काम कर रहे हैं, तो आपको ROCR पर एक नज़र पड़ सकती है ।
CHL

मैंने आरओसीआर के साथ आरओसी वक्र किया
व्लादिमीर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.