Here's an example of using scale_x_datetime on your data with custom breaks. I picked irregular ones as an example, but you could use the commented-out text to make more typical periodic breaks.
library(tidyverse)
lernst_data <-
tibble::tribble(
~ time, ~ sales,
"2017/5/22 4:00", 10943L,
"2017/5/21 4:00", 11504L,
"2017/5/31 4:00", 11530L,
"2017/5/25 4:00", 11586L,
"2017/5/30 4:00", 11834L,
"2017/5/28 4:00", 11909L,
"2017/5/29 4:00", 11962L,
"2017/5/23 4:00", 12500L,
"2017/5/26 4:00", 13361L,
"2017/5/27 0:00", 13873L,
"2017/5/27 4:00", 14221L,
"2017/5/23 0:00", 14616L,
"2017/5/24 0:00", 15123L,
"2017/5/25 0:00", 15506L,
"2017/5/31 0:00", 15635L,
"2017/5/30 0:00", 15954L,
"2017/5/28 0:00", 15977L,
"2017/5/26 0:00", 16020L,
"2017/5/24 4:00", 16484L,
"2017/5/21 0:00", 17865L,
"2017/5/22 0:00", 18176L,
"2017/5/29 0:00", 19663L,
"2017/5/29 20:00", 82236L,
"2017/5/27 20:00", 83043L,
"2017/5/28 20:00", 85146L,
"2017/5/29 8:00", 87779L,
"2017/5/21 8:00", 88097L,
"2017/5/29 16:00", 90712L,
"2017/5/30 20:00", 93007L,
"2017/5/21 20:00", 93178L,
"2017/5/25 20:00", 95056L,
"2017/5/26 20:00", 95741L,
"2017/5/28 16:00", 96534L,
"2017/5/30 8:00", 98494L,
"2017/5/27 16:00", 100263L,
"2017/5/24 20:00", 100511L,
"2017/5/30 16:00", 100517L,
"2017/5/28 8:00", 100785L,
"2017/5/23 20:00", 101296L,
"2017/5/26 16:00", 103592L,
"2017/5/31 20:00", 103735L,
"2017/5/25 16:00", 105954L,
"2017/5/22 20:00", 106065L,
"2017/5/30 12:00", 106879L,
"2017/5/21 16:00", 108202L,
"2017/5/29 12:00", 109062L,
"2017/5/25 8:00", 110579L,
"2017/5/28 12:00", 114185L,
"2017/5/27 8:00", 116136L,
"2017/5/21 12:00", 117835L,
"2017/5/24 8:00", 117853L,
"2017/5/26 8:00", 122221L,
"2017/5/22 8:00", 122425L,
"2017/5/23 16:00", 124383L,
"2017/5/24 16:00", 127696L,
"2017/5/26 12:00", 133663L,
"2017/5/27 12:00", 134442L,
"2017/5/23 12:00", 136722L,
"2017/5/31 8:00", 140863L,
"2017/5/23 8:00", 143900L,
"2017/5/24 12:00", 145211L,
"2017/5/31 16:00", 147506L,
"2017/5/22 16:00", 150118L,
"2017/5/31 12:00", 153933L,
"2017/5/25 12:00", 154980L,
"2017/5/22 12:00", 155885L
) %>%
mutate(time = lubridate::ymd_hm(time))
# One way to set up even breaks
# desired_breaks <- seq.POSIXt(from = lubridate::ymd_hm("20170521 0000"),
# to = lubridate::ymd_hm("20170605 0000"), by = "1 week")
desired_breaks <- lubridate::ymd_hm(c("20170521 0000", "20170522 1200", "20170529 0000"))
ggplot(lernst_data, aes(time, sales)) +
geom_line(alpha = 1/2) +
geom_point(size = 1/2) +
scale_x_datetime(date_labels = "%m.%d\n%H:%M", breaks = desired_breaks, date_minor_breaks = "1 day")