R: ggplot – Plotting a single variable line chart
Join the DZone community and get the full member experience.
Join For Free(geom_line requires the following missing aesthetics: y
I’ve been learning how to do moving averages in R and having done that calculation I wanted to plot these variables on a line chart using ggplot.
The vector of rolling averages looked like this:
> rollmean(byWeek$n, 4) [1] 3.75 2.00 1.25 1.00 1.25 1.25 1.75 1.75 1.75 2.50 2.25 2.75 3.50 2.75 2.75 [16] 2.25 1.50 1.50 2.00 2.00 2.00 2.00 1.25 1.50 2.25 2.50 3.00 3.25 2.75 4.00 [31] 4.25 5.25 7.50 6.50 5.75 5.00 3.50 4.00 5.75 6.25 6.25 6.00 5.25 6.25 7.25 [46] 7.75 7.00 4.75 2.75 1.75 2.00 4.00 5.25 5.50 11.50 11.50 12.75 14.50 12.50 11.75 [61] 11.00 9.25 5.25 4.50 3.25 4.75 7.50 8.50 9.25 10.50 9.75 15.25 16.00 15.25 15.00 [76] 10.00 8.50 6.50 4.25 3.00 4.25 4.75 7.50 11.25 11.00 11.50 10.00 6.75 11.25 12.50 [91] 12.00 11.50 6.50 8.75 8.50 8.25 9.50 8.50 8.75 9.50 8.00 4.25 4.50 7.50 9.00 [106] 12.00 19.00 19.00 22.25 23.50 22.25 21.75 19.50 20.75 22.75 22.75 24.25 28.00 23.00 26.00 [121] 24.25 21.50 26.00 24.00 28.25 25.50 24.25 31.50 31.50 35.75 35.75 29.00 28.50 27.25 25.50 [136] 27.50 26.00 23.75
I initially tried to plot a line chart like this:
library(ggplot2) library(zoo) rollingMean = rollmean(byWeek$n, 4) qplot(rollingMean) + geom_line()
which resulted in this error:
stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. Error: geom_line requires the following missing aesthetics: y
It turns out we need to provide an x and y value if we want to draw a line chart. In this case we’ll generate the ‘x’ value – we only care that the y values get plotted in order from left to right:
qplot(1:length(rollingMean), rollingMean, xlab ="Week Number") + geom_line()

If we want to use the ‘ggplot’ function then we need to put everything into a data frame first and then plot it:
ggplot(data.frame(week = 1:length(rollingMean), rolling = rollingMean), aes(x = week, y = rolling)) + geom_line()
Published at DZone with permission of Mark Needham, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Trending
-
Execution Type Models in Node.js
-
Best Practices for Securing Infrastructure as Code (Iac) In the DevOps SDLC
-
Reducing Network Latency and Improving Read Performance With CockroachDB and PolyScale.ai
-
What ChatGPT Needs Is Context
Comments