Suppose I have a dataframe:
hist <- data.frame(date=Sys.Date() + 0:13,
counts=1:14)
I want to plot the total count against weekday, using a line to connect the points. The following puts points on each value:
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)
When I try to connect them with a line (geom_line()
), ggplot complains about only having one data observation per group and hence is not able to draw a line between the points.
I understand this - it's trying to draw one line for each weekday (factor level).
How can I get ggplot to just pretend (for the purposes of the line only) that the weekdays are numeric? Perhaps I have to have another column day_of_week
that is 0 for monday, 1 for tuesday, etc?
If I understand the issue correctly, specifying group=1
and adding a stat_summary()
layer should do the trick:
ggplot(hist, aes(x=weekday, y=counts, group=1)) + geom_point(stat='summary', fun.y=sum) + stat_summary(fun.y=sum, geom="line")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With