2

我正在尝试使用箱形图来展示地下不同深度的土壤类型(土壤柱)。但是,由于采样间隔不一致,因此样本之间也存在差距。

我的问题如下:

  1. 是否可以将箱形图放在同一列中?即 1 个直列中的所有箱形图

  2. 使用时是否可以删除 x 轴标签和刻度ggdraw?我在使用 plot 时尝试将其删除,但在使用ggdraw.

我的代码如下所示:

 SampleID <- c("Rep-1", "Rep-2", "Rep-3", "Rep-4")
 From <- c(0,2,4,9)
 To <- c(1,4,8,10)
 Mid <- (From+To)/2
 ImaginaryVal <- c(1,1,1,1)
 Soiltype <- c("organic", "silt","clay", "sand")
 df <- data.frame(SampleID, From, To, Mid, ImaginaryVal, Soiltype)

 plot <- ggplot(df, aes(x=ImaginaryVal, ymin=From, lower=From,fill=Soiltype,
            middle=`Mid`, upper=To, ymax=To)) +
          geom_boxplot(colour= "black", stat="identity") +                              scale_y_reverse(breaks = seq(0,10,0.5)) + xlab('Soiltype') +                  ylab('Depth (m)') + theme(axis.text.x = element_blank(),                    axis.ticks.x = element_blank()) 

 ggdraw(switch_axis_position(plot + theme_bw(8), axis = 'x'))

在此处输入图像描述

在图像中,我使用红色箭头和线条指出了我想要的内容。

4

1 回答 1

4

你可以position = position_dodge()这样使用:

plot <- ggplot(df, aes(x=ImaginaryVal, ymin=From, lower=From,fill=Soiltype, middle=Mid, upper=To, ymax=To)) +
  geom_boxplot(colour= "black", stat="identity", position = position_dodge(width=0)) + 
  scale_y_reverse(breaks = seq(0,10,0.5)) + 
  xlab('Soiltype') + 
  ylab('Depth (m)') + 
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

在此处输入图像描述

编辑:我认为你根本不需要cowplot,如果这是你希望你的情节看起来的样子:

在此处输入图像描述

ggplot(df, aes(x=ImaginaryVal, ymin=From, lower=From,fill=Soiltype, middle=Mid, upper=To, ymax=To)) +
  geom_boxplot(colour= "black", stat="identity", position = position_dodge(width=0)) + 
  scale_y_reverse(breaks = seq(0,10,0.5)) + 
  xlab('Soiltype') + 
  ylab('Depth (m)') + 
  theme_bw() +
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank()) +
  xlab("") +
  ggtitle("Soiltype")
于 2016-04-07T13:54:14.417 回答