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


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.