绘制100次随机调查

时间:2018-07-16 19:40:51

标签: r ggplot2

我正在尝试在R中复制以下图形:

enter image description here

这表示代表100个随机轮询置信区间,平均值为42.9。我在qplot上取得了一些进展,但是有些事情我仍然无法解决。

library(ggplot2)

polls <- replicate(100, rnorm(100, mean = 30, sd=3))

# Calculate 90% confidence intervals for each row.

tint <- matrix(NA, nrow = dim(polls)[2], ncol = 2)
for (i in 1:dim(polls)[2]) {
  temp <- t.test(polls[, i], conf.level = 0.9)
  tint[i, ] <- temp$conf.int
}
colnames(tint) <- c("lcl", "ucl")

# The width of each confidence interval:

width <- apply(tint, 1, diff)
tint <- cbind(tint, width)
tint <- data.frame(tint)

并使用命令:

qplot(tint$width, y=30, geom="pointrange",ymin = tint$lcl, ymax = tint$ucl) + coord_flip() + 
  theme_bw()

我得到:

enter image description here

问题:

  • 如何更改y以代表每个民意测验?
  • 如何以预期的平均值(在这种情况下为30)画线?

1 个答案:

答案 0 :(得分:1)

这不是一个非常优雅的解决方案,但它可以工作:

plot_polls <- ggplot(data=tint, aes(x=ucl-width/2, y=seq(1:100))) +
              geom_point() + geom_errorbarh(aes(xmin=lcl,xmax=ucl)) + 
              geom_vline(xintercept = 30, color="red") 
plot_polls