【发布时间】:2014-03-09 16:25:53
【问题描述】:
我有以下data.frame:
df = data.frame(ymin = c(0.35,0.4,0.25,0.3,0.55,0.6), lower = c(0.45,0.5,0.35,0.4,0.65,0.7), middle = c(0.5,0.55,0.4,0.45,0.7,0.75), upper = c(0.55,0.6,0.45,0.5,0.75,0.8), ymax = c(0.65,0.7,0.55,0.6,0.85,0.9), factor = c("parental","parental","cross","cross","sex","sex"), factor.label = c("paternal","maternal","F1i","F1R","M","F"), posterior.probability = c(0.92,0.92,0.97,0.97,0.99,0.99), x = c(1,1,2,2,3,3), colors = c("blue","red","gray30","gray70","lightskyblue","pink"))
我想生成一个 ggplot2 箱线图,其中 df$x 定义框的 x 轴位置,df$lower、df$upper、df$middle、df$ymin、df$ymax 定义框,df$颜色定义框的颜色。正如你所看到的,每对盒子都应该放在同一个 x 轴位置。使用 alpha 参数,我将使框透明,因此重叠部分可见。
我目前拥有的是这段代码:
p = ggplot(beta.df, aes(x = x, color = colors))
p = p + geom_boxplot(aes(lower = lower,upper = upper, middle = middle, ymin = ymin, ymax = ymax, fill = colors), position = position_dodge(width = 0), width = 0.5, alpha = 0.5, stat = "identity")
显然,盒子的颜色搞砸了——"blue" 和 "red" 盒子应该在 df$x = 1,"gray30" 和 "gray70" 盒子应该在 df$x = 2,而 @ 987654330@ 和 "pink" 框应该在 df$x = 3。所以我正在寻找解决这个问题。
我还希望指定图例标题和标签,而不是默认生成。此外,对于每对具有相同 x 轴位置的框,df$posterior.probability 值是相同的,我想要在图的顶部绘制这些值(每对一个),比如最大 y 轴值,或在每对框的 max(ymax) 顶部和相应的 x 轴位置。换句话说,0.92、0.97 和 0.99 将分别绘制在 x 位置:1、2 和 3,以及绘图的最大 y 位置或这些位置 y 位置:0.75、0.65 和 0.95,分别。
【问题讨论】: