【问题标题】:Box plot with previously calculated values具有先前计算值的箱线图
【发布时间】:2015-07-15 21:42:19
【问题描述】:

我有以下我之前计算的数据:

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 将每一行绘制为一个箱线图,在平均值处添加一条额外的线,然后对 Type 做一个因子。因此,如果我在第一行有一个情节 p,我可以使用以下方法完成它:

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

但是,如果您提供我没有的原始数据,ggplot 似乎只会绘制它。有没有办法直接从 ggplot2 的汇总统计中获取箱线图?

我也试过用 geom_errorbar 来做,但没有多大成功...

谢谢!

【问题讨论】:

  • 这令人困惑。 “第一行”是什么意思?第一行是什么?
  • 第一行对应“Type = Median”的行。基本上,我有两个估计值,一个使用参数的中值,一个使用平均值。每个估计本身都是随机的,它会生成每一行的所有信息。

标签: r plot ggplot2


【解决方案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")

要添加均值线,我知道的唯一方法是以相当“hacky”的方式进行。

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

【讨论】:

  • 还有一种简单的方法可以将水平条添加到晶须上吗?你geom_text(aes(x=ParamEstim, y=Min), label="_________", color="red") 的巧妙技巧给出了一些不太一致的东西?
  • 我想你可以像我上面那样添加胡须,geom_text(aes=ParamEstim, y=Min), label="____")。而且这条线并没有完全对齐。不幸的是,我不知道在ggplot 世界中有任何其他方法可以做到这一点。
猜你喜欢
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多