在 facet'ed geom_boxplot 中更改晶须定义
Changing whisker definition in facet'ed geom_boxplot
我创建了一个 facet_grid
,其中包含多个变量的箱线图。举个例子,可以通过以下虚拟数据重现图表
require(ggplot2)
require(plyr)
library(reshape2)
set.seed(1234)
x<- rnorm(100)
y.1<-rnorm(100)
y.2<-rnorm(100)
y.3<-rnorm(100)
y.4<-rnorm(100)
df<- (as.data.frame(cbind(x,y.1,y.2,y.3,y.4)))
dfmelt<-melt(df, measure.vars = 2:5)
并将结果图创建为
dfmelt$bin <- factor(round_any(dfmelt$x,0.5))
ggplot(dfmelt, aes(x=bin, y=value, fill=variable))+
geom_boxplot()+
facet_grid(.~bin, scales="free")+
labs(x="X (binned)")+
theme(axis.text.x=element_blank())
结果如下:
但是,我想重新定义箱线图须,使它们不代表 0.25 - 1.5 IQR / 0.75 + IQR 和离群值,而是 (i) 完整的第 5 个和第 95 个百分位数或 (ii) 无穷大和上确界的数据。
您可以使用 stat_summary
自定义外观,例如
ggplot(dfmelt, aes(x=bin, y=value, fill=variable)) +
stat_summary(geom = "boxplot",
fun.data = function(x) setNames(quantile(x, c(0.05, 0.25, 0.5, 0.75, 0.95)), c("ymin", "lower", "middle", "upper", "ymax")),
position = "dodge")
我创建了一个 facet_grid
,其中包含多个变量的箱线图。举个例子,可以通过以下虚拟数据重现图表
require(ggplot2)
require(plyr)
library(reshape2)
set.seed(1234)
x<- rnorm(100)
y.1<-rnorm(100)
y.2<-rnorm(100)
y.3<-rnorm(100)
y.4<-rnorm(100)
df<- (as.data.frame(cbind(x,y.1,y.2,y.3,y.4)))
dfmelt<-melt(df, measure.vars = 2:5)
并将结果图创建为
dfmelt$bin <- factor(round_any(dfmelt$x,0.5))
ggplot(dfmelt, aes(x=bin, y=value, fill=variable))+
geom_boxplot()+
facet_grid(.~bin, scales="free")+
labs(x="X (binned)")+
theme(axis.text.x=element_blank())
结果如下:
但是,我想重新定义箱线图须,使它们不代表 0.25 - 1.5 IQR / 0.75 + IQR 和离群值,而是 (i) 完整的第 5 个和第 95 个百分位数或 (ii) 无穷大和上确界的数据。
您可以使用 stat_summary
自定义外观,例如
ggplot(dfmelt, aes(x=bin, y=value, fill=variable)) +
stat_summary(geom = "boxplot",
fun.data = function(x) setNames(quantile(x, c(0.05, 0.25, 0.5, 0.75, 0.95)), c("ymin", "lower", "middle", "upper", "ymax")),
position = "dodge")