具有先前计算值的箱形图

时间:2015-07-15 21:42:20

标签: r plot ggplot2

我之前计算过以下数据:

plotData <- structure(list(Min = c(250.866197946263, 270.805621355386), `2.5%` = c(1806.60435406315, 
1807.31835620068), `50%` = c(7660.214866495, 7667.78371852935
), mean = c(8598.13903058242, 8600.3276561399), `97.5%` = c(20678.7670144642, 
20675.0354903488), Max = c(35526.3400756986, 36782.0082581976
)), .Names = c("Min", "2.5%", "50%", "mean", "97.5%", "Max"), row.names = c("median", 
"mean"), class = "data.frame")

    > plotData
            Min     2.5%      50%     mean    97.5%      Max   Type
median 250.8662 1806.604 7660.215 8598.139 20678.77 35526.34 Median
mean   270.8056 1807.318 7667.784 8600.328 20675.04 36782.01   Mean

我想要做的是使用ggplot将每一行绘制成一个箱形图,在平均值处加一行,然后在类型上做一个因子。因此,如果我在第一行有一个情节p,我可以使用:

完成它

p + geom_boxplot(aes(fill = factor(Type)))

然而,如果您提供我不具备的原始数据,ggplot似乎只会绘制它。有没有办法直接从ggplot2的摘要统计中获取箱图?

我也试过用geom_errorbar做这件事,但没有太大的成功......

谢谢!

1 个答案:

答案 0 :(得分:1)

ggplot2 docs之后有一个例子。基本上您应该将stat设置为"identity"

使用您的数据,您可以得到以下内容:

row.names(plotData) -> plotData$X1; 
ggplot(plotData, aes(x = X1, ymin=Min, lower=`2.5%`, middle = `50%`, upper = `97.5%`, ymax = Max)) + 
  geom_boxplot(stat="identity")

enter image description here

要为平均线添加线条,我唯一能够意识到的方法是在一个相当&#34; hacky&#34;方式。

ggplot(plotData, aes(x = X1, ymin=Min, lower=`2.5%`, middle = `50%`, upper = `97.5%`, ymax = Max)) + 
  geom_boxplot(stat="identity") + 
  geom_text(aes(x=X1, y=mean), label="__________________________________", color="red")

enter image description here