我正在尝试在R中复制以下图形:
这表示代表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()
我得到:
问题:
答案 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