繁体   English   中英

如何使用ggplot(geom_boxplot)在同一列中放置多个箱形图

[英]How to place multiple boxplots in the same column with ggplot(geom_boxplot)

我想建立一个箱线图,其中四个因子(N1:N4)覆盖在同一列中。 例如,使用以下数据:

df<-data.frame(N=N,Value=Value)
Q<-c("C1","C1","C2","C3","C3","C1","C1","C2","C2","C3","C3","Q1","Q1","Q1","Q1","Q3","Q3","Q4","Q4","Q1","Q1","Q1","Q1","Q3","Q3","Q4","Q4")
N<-c("N2","N3","N3","N2","N3","N2","N3","N2","N3","N2","N3","N0","N1","N2","N3","N1","N3","N0","N1","N0","N1","N2","N3","N1","N3","N0","N1")
Value<-c(4.7,8.61,8.34,5.89,8.36,1.76,2.4,5.01,2.12,1.88,3.01,2.4,7.28,4.34,5.39,11.61,10.14,3.02,9.45,8.8,7.4,6.93,8.44,7.37,7.81,6.74,8.5)

使用以下(常规)代码,输出为4个变量的4列显示在4列中

ggplot(df, aes(x=N, y=Value,color=N)) +  theme_bw(base_size = 20)+ geom_boxplot()

非常感谢

更新的答案

根据您的评论,这是一种添加边际箱线图的方法。 我们将使用内置的mtcars数据框架。

首先,进行一些设置:

library(cowplot)

# Common theme elements
thm = list(theme_bw(), 
           guides(colour=FALSE, fill=FALSE),
           theme(plot.margin=unit(rep(0,4),"lines")))

现在,创建三个图:

# Main plot
p1 = ggplot(mtcars, aes(wt, mpg, colour=factor(cyl), fill=factor(cyl))) +
  geom_smooth(method="lm") + labs(colour="Cyl", fill="Cyl") +
  scale_y_continuous(limits=c(10,35)) +
  thm[-2] +
  theme(legend.position = c(0.85,0.8)) 

# Top margin plot
p2 = ggplot(mtcars, aes(factor(cyl), wt, colour=factor(cyl))) +
  geom_boxplot() + thm + coord_flip() + labs(x="Cyl", y="")

# Right margin plot
p3 = ggplot(mtcars, aes(factor(cyl), mpg, colour=factor(cyl))) +
  geom_boxplot() + thm + labs(x="Cyl", y="") +
  scale_y_continuous(limits=c(10,35))

布置图并添加图例:

plot_grid(plotlist=list(p2, ggplot(), p1, p3), ncol=2, 
          rel_widths=c(5,1), rel_heights=c(1,5), align="hv")

在此处输入图片说明

原始答案

您可以将所有四个箱形图叠加在一个列中,但是该图将不可读。 下面的第一个示例删除N作为x坐标,但保留N作为颜色美感。 这导致四个水平的N被绘制在单个刻度上(通过将breaks设置为NULL ,我将其删除了)。 但是,这些地块仍被躲避。 要将它们绘制在另一个之上,请将闪避宽度设置为零,就像在第二个示例中所做的那样。 但是,这些图在覆盖时不可读。

ggplot(df, aes(x="", y=Value,color=N)) + 
  theme_bw(base_size = 20) + 
  geom_boxplot() +
  scale_x_discrete(breaks=NULL) +
  labs(x="")

ggplot(df, aes(x="", y=Value,color=N)) + 
  theme_bw(base_size = 20) + 
  geom_boxplot(position=position_dodge(0)) +
  scale_x_discrete(breaks=NULL) +
  labs(x="")

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM