/ / Покладіть вуздець на коробковий блок - r, ggplot2, boxplot

Покласти вуздець закінчується на boxplot - r, ggplot2, boxplot

Я хотів би поставити перпендикулярні лінії на кінцях вузлів, як boxplot функція автоматично дає.

Відповіді:

47 для відповіді № 1

Як натякнуто, але не виконано @Roland, ви можете використовувати stat_boxplot для реалізації цього. Виклик трюку _boxplot двічі і це встановити geom до errorbar для одного з викликів.

Зауважте, що як R використовує ручковий і паперовий підхід, то доцільно в першу чергу застосувати похибки помилок, намалюйте традиційну коробку на верхній частині.

Використання фіктивних даних @Roland df

ggplot(df, aes(x=cond, y = value))  +
stat_boxplot(geom ="errorbar") +
geom_boxplot() # shorthand for  stat_boxplot(geom="boxplot")

введіть опис зображення тут

Допомога для stat_boxplot (?stat_boxplot) деталізує різні значення, обчислені та збережені в a data.frame


15 для відповіді № 2

Щоб змінити розмір ліній вусів, ми можемо використовувати аргумент width = 0.5 всередині функції: stat_boxplot

set.seed(42)
df <- data.frame(cond = factor(rep(c("A", "B"), each = 500)),
value = c(rnorm(500, mean = 1, sd = 0.2),
rnorm(500, mean = 1.5, sd = 0.1)))

library(ggplot2)
ggplot(df, aes(x = cond, y = value)) +
stat_boxplot(geom = "errorbar", width = 0.5) +
geom_boxplot()

введіть опис зображення тут


6 за відповідь № 3

Можливо, це можливо stat_boxplot щоб розрахувати вуздечки, але мені не вистачає а ggplot2 майстер, тому я використовую базову функцію для цього.

set.seed(42)
df <- data.frame(cond = factor( rep(c("A","B"), each=500) ),
value = c(rnorm(500,mean=1,sd=0.2),rnorm(500, mean=1.5,sd=0.1)))


whisk <- function(df,cond_col=1,val_col=2) {
require(reshape2)
condname <- names(df)[cond_col]
names(df)[cond_col] <- "cond"
names(df)[val_col] <- "value"
b <- boxplot(value~cond,data=df,plot=FALSE)
df2 <- cbind(as.data.frame(b$stats),c("min","lq","m","uq","max"))
names(df2) <- c(levels(df$cond),"pos")
df2 <- melt(df2,id="pos",variable.name="cond")
df2 <- dcast(df2,cond~pos)
names(df2)[1] <- condname
df2
}



library(ggplot2)

plot1 <- ggplot(df, aes(x=cond))
plot1 <- plot1 + geom_errorbar(aes(ymin=min,ymax=max),data=whisk(df),width = 0.5)
plot1 <- plot1 + geom_boxplot(aes(y=value))
plot1

boxplot з горизонтальним на кінчиках вузла