【问题标题】:Pointrange plot with boxplot type grouping带箱线图类型分组的点距图
【发布时间】:2012-04-26 09:04:07
【问题描述】:

我有可以用箱线图绘制的数据,但每个框的 n 仅为 3。我想在 ggplot2 中使用点范围类型的图来绘制它们。默认情况下,它们相互重叠。当我的点在箱线图中分组时,如何将它们并排分组?

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

【问题讨论】:

    标签: r ggplot2 plot confidence-interval statistics-bootstrap


    【解决方案1】:

    你有两个问题(尽量避免)。

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

    然后照常绘制:

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

    位置参数停止将行放在彼此的顶部。这给出了:

    【讨论】:

    • 啊, position_dodge 是命令。谢谢!我想我想出了引导(function(a,b) mean(a[b]) 而不仅仅是使用“a”。 “boot”包中的boot.ci() 为我提供了 5 种不同类型的引导间隔。 “基本”适合这种情况吗?
    • 抱歉没用过那个包。
    • 我必须用三点来支持关于引导的警告/担忧......!
    • 嗯...你是对的。不做假设是不可能的。假设引导的正态分布与使用 sd 或 se 具有“相同”的效果,对吗?即,区间是从正态分布中得出的,尽管分布不是那么正态(例如,两个点非常接近,一个点离它们很远)。当然,当从具有大 CV 的正态分布中抽取 3 个随机点时,几乎可以得到任何结果。也许我应该向 CrossValidated 提出一个问题。
    • @Largh 为什么要使用简历。只需使用散点图显示这三个点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2021-08-28
    • 2016-09-14
    • 2013-05-11
    • 2021-09-08
    • 2021-03-08
    相关资源
    最近更新 更多