我想绘制一个水平小平面线与该方面的总体中位数 .
我尝试了这种方法,但没有使用以下代码创建虚拟汇总表:
require(ggplot2)
dt = data.frame(gr = rep(1:2, each = 500),
id = rep(1:5, 2, each = 100),
y = c(rnorm(500, mean = 0, sd = 1), rnorm(500, mean = 1, sd = 2)))
ggplot(dt, aes(x = as.factor(id), y = y)) +
geom_boxplot() +
facet_wrap(~ gr) +
geom_hline(aes(yintercept = median(y), group = gr), colour = 'red')
但是,为每个方面分别绘制整个数据集的中位数而不是中位数的行:
过去,建议使用solution
geom_line(stat = "hline", yintercept = "median")
但它已经停止(产生错误“没有名为StatHline的统计数据”) .
另一个solution建议
geom_errorbar(aes(ymax=..y.., ymin=..y.., y = mean))
但它产生了
Error in data.frame(y = function (x, ...) :
arguments imply differing number of rows: 0, 1000
最后,有一种方法可以通过创建具有所需统计数据的_2500369来绘制中位数,但我想避免它 .
1 回答
您可以在
dt
中为每个方面的中位数创建一个额外的列 .