66

假设我有一个数据框:

hist <- data.frame(date=Sys.Date() + 0:13,
                   counts=1:14)

我想用一条线连接点来绘制总计数与工作日的关系。下面对每个值加分:

hist <- transform(hist, weekday=factor(weekdays(date),
                                       levels=c('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')))
ggplot(hist, aes(x=weekday, y=counts)) + geom_point(stat='summary', fun.y=sum)

当我尝试用一​​条线 ( geom_line()) 连接它们时,ggplot 抱怨每组只有一个数据观察值,因此无法在点之间画一条线。

我理解这一点 - 它试图为每个工作日画一条线(因子水平)。

我怎样才能让 ggplot 假装(仅出于该行的目的)工作日是数字的?也许我必须有另一列day_of_week,周一为 0,周二为 1,等等?

4

1 回答 1

72

如果我正确理解了这个问题,指定group=1和添加一个stat_summary()层应该可以解决问题:

ggplot(hist, aes(x=weekday, y=counts, group=1)) +
geom_point(stat='summary', fun.y=sum) +
stat_summary(fun.y=sum, geom="line")

在此处输入图像描述

于 2013-05-03T02:45:07.807 回答