I'm working with a data frame that includes both the day and month of the observation:
Day     Month      
1      January
2      January
3      January
...
32     February
33     February
34     February
...
60     March
61     March
And so on. I am creating a line graph in ggplot that reflects the day by day value of column wp (which can just be assumed to be random values between 0 and 1).
Because there are so many days in the data set, I don't want them to be reflected in the x-axis tick marks. I need to refer to the day column in creating the plot so I can see the day-by-day change in wp, but I just want month to be shown on the x-axis labels. I can easily rename the x-axis title with xlab("Month"), but I can't figure out how to change the tick marks to only show the month. So ideally, I want to see "January", "February", and "March" as the labels along the x-axis.
test <- ggplot(data = df, aes(x=day, y=wp)) +
  geom_line(color="#D4BF91", size = 1) +
  geom_point(color="#D4BF91", size = .5) + 
  ggtitle("testex") +
  xlab("Day") +
  ylab("Value") +
  theme_fivethirtyeight() + theme(axis.title = element_text())
                When I treat the day as an actual date, I get the desired result:
library(lubridate)
set.seed(21540)
dat <- tibble(
  date = seq(mdy("01-01-2020"), mdy("01-01-2020")+75, by=1), 
  day = seq_along(date), 
  wp = runif(length(day), 0, 1)
)
ggplot(data = dat, aes(x=date, y=wp)) +
  geom_line(color="#D4BF91", size = 1) +
  geom_point(color="#D4BF91", size = .5) + 
  ggtitle("testex") +
  xlab("Day") +
  ylab("Value") +
  theme(axis.title = element_text())

More generally, though you could use scale_x_continuous() to do this:
library(lubridate)
set.seed(21540)
dat <- tibble(
  date = seq(mdy("01-01-2020"), mdy("01-01-2020")+75, by=1), 
  day = seq_along(date), 
  wp = runif(length(day), 0, 1), 
  month = as.character(month(date, label=TRUE))
)
firsts <- dat %>% 
  group_by(month) %>% 
  slice(1)
ggplot(data = dat, aes(x=day, y=wp)) +
  geom_line(color="#D4BF91", size = 1) +
  geom_point(color="#D4BF91", size = .5) + 
  ggtitle("testex") +
  xlab("Day") +
  ylab("Value") +
  scale_x_continuous(breaks=firsts$day, label=firsts$month) + 
  theme(axis.title = element_text())

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