Amy*_*Liu 5 r mean standard-error ggplot2 boxplot
我有两个分类因素('Habitat'和'Locality')和一个连续变量(T).'Habitat'有两个级别,'Locality'有八个级别.我想更改默认胡须来代表SE,并将中位数改为每个箱图的均值.有没有办法做到这一点,并在绘图时考虑两个分类因素?提前谢谢了.
这就是我用boxplot ggplot的默认设置所做的,显示了具有中间间隔的第一和第三个四分位数.
ggplot(data,aes(x=Locality,y=T)) +
geom_boxplot(aes(fill=interaction(Habitat,Locality),
group=interaction(factor(Habitat),Locality)),
outlier.shape=1,outlier.size=3) +
theme_bw() +
theme(
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
axis.line=element_line(colour='black'),
legend.position='none',
axis.text.x=element_text(angle=90,hjust=1,size=12)) +
scale_y_continuous('T') +
xlab('Locality')
Run Code Online (Sandbox Code Playgroud)
Mas*_*awa 11
首先编写一个计算min,mean-1SEM,mean,mean + 1SEM和Max的函数.然后使用将这5个值映射到箱线图上stat_summary.
library(gridExtra)
library(ggplot2)
MinMeanSEMMax <- function(x) {
v <- c(min(x), mean(x) - sd(x)/sqrt(length(x)), mean(x), mean(x) + sd(x)/sqrt(length(x)), max(x))
names(v) <- c("ymin", "lower", "middle", "upper", "ymax")
v
}
g1 <- ggplot(mtcars, aes(factor(am), mpg)) + geom_boxplot() +
ggtitle("Regular Boxplot")
g2 <- ggplot(mtcars, aes(factor(am), mpg)) +
stat_summary(fun.data=MinMeanSEMMax, geom="boxplot", colour="red") +
ggtitle("Boxplot: Min, Mean-1SEM, Mean, Mean+1SEM, Max")
grid.arrange(g1, g2, ncol=2)
Run Code Online (Sandbox Code Playgroud)
