আর-এ লেবেলিং বক্সপ্লট


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
সিএল

8

স্বতন্ত্র সংস্করণের জন্য এর মতো কিছু ব্যবহার করে দেখুন:

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

নোট করুন যে কল করার সময় আপনি কিছু তথ্য পেতে পারেন boxplot, বিশেষত "পাঁচ নম্বর"।

আপনি যদি চান এটা অন্য গ্রাফিক, ব্যবহার সম্মুখের superimposed করা add=Tকিন্তু প্রতিস্থাপন mtextদ্বারা text; আপনাকে একটি মান নির্ধারণ করতে হবে (যা আপনি অন্যান্য গ্রাফিকের পরিকল্পনার উপর নির্ভর করে)।y

জন মেইনডোনাল্ড আরও একটি সম্পূর্ণ উদাহরণ দিয়েছেন (কোডটি তার ওয়েবসাইটে হওয়া উচিত):

এখানে চিত্র বর্ণনা লিখুন


3

সম্পূর্ণ কাস্টমাইজযোগ্য ggplot2 বক্সপ্লট ...

#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)

বক্সপ্লট সঙ্গে রক বক্ররেখা


বক্সপ্লট এউসির সংক্ষিপ্ত বিবরণ দেওয়ার কথা? যদি তাই হয় তবে কেন ন্যূনতম মান = 0.5?
chl

হ্যাঁ, অদ্ভুত বলে মনে হচ্ছে, কারণ বেশ কয়েকটি আরওসি 0.5 এর নীচে হওয়া উচিত। কী ভুল হয়েছে তা খনন করা ...
ভ্লাদিমির চুপাখিন

আমি পয়েন্টটি নীচের মানের জন্য আরওসি এউসিটি উল্টিয়েছি 0.5, তাই গ্রাফিকগুলি পুনরায় তৈরি করা উচিত। অনেক ধন্যবাদ!
ভ্লাদিমির চুপাখিন

ফিরে আসার জন্য +1, আমি আপনার আপডেটের জন্য অপেক্ষা করছি। আপনি যদি বিভিন্ন শ্রেণিবদ্ধের সাথে কাজ করছেন তবে আপনার কাছে আরআরসিআর হতে পারে ।
chl

আমি আরওসিআর
ভ্লাদিমির চুপাখিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.