如何在同一列中制作箱形图以表示土柱

时间:2016-04-07 12:52:28

标签: r ggplot2 bar-chart cowplot

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

我的问题如下:

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

  2. 使用ggdraw时是否可以删除x轴标签和刻度?我在使用情节时尝试将其删除,但在使用ggdraw时再次显示。

  3. 我的代码如下所示:

     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'))
    

    enter image description here

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

1 个答案:

答案 0 :(得分: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())

enter image description here

编辑:我根本不认为你需要牛仔图,如果这是你希望你的情节看起来像:

enter image description here

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")