ggplot2 箱线图的宽度

ggplot2 width of boxplot

我试图制作 2 个独立的图,我想在我的海报中并排展示它们(我需要将它们分开并且不能使用 facet_wrap)。其中一个地块有多个箱线图,而第二个地块只有一个。当我将两个图并排放置时,如何操纵箱线图的宽度,使第二个箱线图的尺寸与图 1 中任何一个箱线图的宽度相同?一个可重现的例子:

tvalues <- sample(1:10000,1200)
sex <- c(rep('M',600),rep('F',600))
region <- c('R1','R2','R3','R4','R5')
df1 <- data.frame(tvalues,sex,region)

tvalues2 <- sample(1:10000,200)
sex2 <- sample(c('M','F'),200,replace=T)
region2 <- 'R6'
df2 <- data.frame(tvalues2,sex2,region2)

p1 <- ggplot(data=df1,aes(x=region,y=tvalues,color=sex)) + 
geom_boxplot(width=0.5)
p2 <- ggplot(data=df2,aes(x=region2,y=tvalues2,color=sex2)) + 
geom_boxplot(width=0.5)

地块 1

情节2

我建议用第一个图中 region 的类别数除以第二个图中框的宽度。

p2 <- ggplot(data=df2,aes(x=region2,y=tvalues2,color=sex2)) + 
geom_boxplot(width=0.5/length(unique(df1$region)))

如果是单个箱线图,如下例所示:

a<- data.frame(obs=rep("A", 50),
       value=rnorm(50, 100, 50))

ggplot(a, aes(y=value))+
geom_boxplot()

Wide boxplot

我们可以建立一个假的 x/y 轴并建立一个轴限制,所以 geom_boxplot() 的宽度选项决定了盒子的宽度

ggplot(a, aes(y=value, x=0))+
geom_boxplot(width=0.7) + 
xlim(-1,1)

Thinner boxplot

您可以添加以下内容以删除所有 x.axis 文本和勾号

theme(theme(axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank())