你可以伪造它:
mydata <- "Plate Month Day Concentration
A April 1 17.1094
B April 2 16.001
C April 3 17.9501
D April 4 18.3686
E April 5 18.3133
F April 6 19.1189
G May 1 16.0423
H May 2 16.3614
I May 3 18.5723
J May 4 19.1091
K May 5 17.6863
L May 6 18.2647"
myData <- data.frame(read_table(mydata))
myData <- myData %>% mutate(plot_day = seq_along(Day))
rect_data <- myData %>% group_by(Month) %>%
summarise(data.frame(xmin = min(plot_day), xmax=max(plot_day))) %>%
mutate(ymin = 19.25, ymax=19.5)
ggplot() +
geom_point(data = myData, aes(x = plot_day, y = Concentration)) +
geom_rect(data=rect_data, aes(ymin=ymin, ymax=ymax, xmin=xmin-c(.55, .45), xmax=xmax+c(.45, .55)),
fill="gray75", col="transparent") +
geom_text(data = rect_data, aes(x=c(3.5, 9.5), y=19.375, label = c("April", "May"))) +
coord_cartesian(xlim=c(.449, 12.551), ylim=c(15.75, 19.501), expand=0) +
scale_x_continuous(breaks = seq(2,12, by=2),
labels=c("2", "4", "6", "2", "4", "6")) +
geom_vline(xintercept=6.5, col="white", size=2) +
geom_line(data = myData, aes(x = plot_day, y = Concentration)) +
labs(x="Day")