Add discrete labels to ggplot2 plot with continuous scale

Viewed 13380

I am trying to add discrete labels to a ggplot2 plot with a continuous scale. While there are many questions using stat_function (i.e., about plotting multiple functions) and many about how to use different scales, I'm having trouble understanding how to change the scale in this specific instance.

Here is the plot:

myfun1 <- function(x) (13.076-96.543)*x + (-44.056 +102.057)*x^2 + (17.856 -42.996)*x^3 + (-2.996  + 7.444)*x^4 + (0.190 -0.450)*x^5 + 100.088 + 75.215 # average vs. lowest
myfun2 <- function(x) 13.076*x -44.056*x^2 + 17.856*x^3 -2.996*x^4 + 0.190*x^5 + 100.088 # lowest
myfun3 <- function(x) (13.076-183.093)*x + (-44.056 +229.447)*x^2 + (17.856 -99.353)*x^3 + (-2.996  + 17.517)*x^4 + (0.190 -1.080)*x^5 + 100.088 + 67.115 # highest vs. lowest

df <- data.frame(x = c(0, 6), y = c(0, 6))

myplot_weekday <- ggplot(data = df, aes(x = x, y = y)) + 
  stat_function(fun = myfun3, aes(color = "Highest")) +
  stat_function(fun = myfun2, aes(color = "Lowest")) +
  stat_function(fun = myfun1, aes(color = "Average")) +
  theme_minimal() +
  scale_colour_manual("Students' Course Grade", values = c("red", "black", "blue")) +
  theme(legend.position = "top") +
  theme(text=element_text(size= 14, family= "Times")) +
  ylab("Minutes of Videos Watched") +
  xlab("Weekday")

weekday plot

Instead of the continuous labels on the x-axis (0, 2, 4, and 6), I'm trying to add "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", and "Saturday," but I sense I'm approaching this the wrong way.

1 Answers
Related