带有boxplot类型分组的Pointrange图

时间:2012-04-26 09:04:08

标签: r plot ggplot2 bootstrapping confidence-interval

我的数据可以用方框图绘制,但每个方框的n只有3.我想在ggplot2中使用点范围类型的绘图来绘制它们。默认情况下,它们彼此重叠。当我们将它们分组到boxplot中时,如何将我的点并排分组?

library(ggplot2)

x <- rnorm(12, 3,5) # Real data are not always normally distributed.
y <- c(rep("T1", 6), rep("T2", 6))
z <- rep(c(10,20),6)

dat <- data.frame(Treatment = y, Temp = z, Meas = x)

p <- ggplot(dat, aes(Treatment, Meas))
p + geom_boxplot(aes(fill=factor(Temp)))

编辑:我更新了问题以排除引导建议(最初的想法是使用置信区间作为误差条。一个问题的问题太多= D)。更详细的引导问题是here

enter image description here

1 个答案:

答案 0 :(得分:5)

你有两个问题(尽量避免这种情况)。

  1. 自举。你如何从3点的样本中引导,你不知道基础分布?

  2. 行范围。我已经使用您的原始数据来构建行范围。对于行范围,您只需要一个最小值,最大值和中间值:

    ##First rearrange your data frame
    dat = with(dat, dat[order(Treatment, Temp, Meas),])
    dat$type = c("min", "mid", "max")
    
    library(reshape2)
    dat1 = dcast(dat, Treatment + Temp ~  type, value.var = "Meas")
    
  3. 然后照常绘制:

        p = ggplot(dat1) +
            geom_pointrange(aes(ymin=min, ymax=max, 
                                y=mid,x=Treatment, group=Temp),
               position=position_dodge(width=0.20)) 
    

    位置参数会阻止线条放在彼此的顶部。这给出了:

    Example line range plot