ggplot2 箱线图的宽度

问题描述 投票:0回答: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 plot 1:

情节2 plot 2:

r ggplot2 boxplot
2个回答
25
投票

我建议将第二个图中框的宽度除以第一个图中

region
的类别数量。

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

enter image description here


6
投票

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

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)

Thin boxplot

您可以添加以下内容来删除所有 x.axis 文本和刻度

主题(主题(axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank())

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.