我是R的新手,我在RStudio中使用R.我最近在一本R书中看到了这张图(请看下图)(尽管它没有解释这张图是如何实现的):
我想用以下数据复制此图表:
序列观察数(显示在x轴上):1,2,3,4,5
每次观察的价值:140,165,125,175,185
平均预算值(将是图表中的水平线):150
如何创建此图表?
答案 0 :(得分:3)
您可以使用geom_segment
完成大部分繁重的工作:
library(ggplot2)
ggplot(data.frame(x = 1:5,
y = c(140, 165, 125, 175, 185)),
aes(x, y, xend = x, yend = 150, label = y - 150)) +
geom_point(color = 'seagreen') +
geom_hline(yintercept = 150, color = 'seagreen') +
geom_segment(linetype = 'dashed', color = 'seagreen') +
geom_text(nudge_x = .1)
答案 1 :(得分:2)
dat <- data.frame(x = 1:5, val=c(140, 165, 125, 175, 185), mean=150)
dat <- dat %>% gather(var, budget, val:mean)
ggplot(dat, aes(x, budget, group=as.factor(x))) +
geom_line() +
geom_hline(yintercept=150) +
geom_point(data=dat %>% filter(var=="val"))
插入点与均值之间的差异:
dat2 <- dat %>%
group_by(x) %>%
summarise(val=diff(budget)*-1, mean=mean(budget)
ggplot(dat, aes(x, budget, group=as.factor(x))) +
geom_line(linetype="dotted") +
geom_hline(yintercept=150) +
geom_point(data=dat %>% filter(var=="val")) +
geom_text(data=dat2, aes(x+.1, mean, label=val))