I have a dataframe, as given a sample below:
df <- data.frame(list(Name = c("A", "A", "A", "A", "A",
"B", "B", "B", "B", "B"),
Date_Types = c("Date1", "Date2",
"Date3","Date4", "Date5",
"Date1", "Date2", "Date3",
"Date4", "Date5"), Dates =
structure(c(18903, 18965, 19081,
19116, 19172, 19083, 19097,
19219, 19249, 19341), class =
"Date")))
I want to create a plot and add vertical grid lines every 3 months (so every quarter of the year). I have the following code:
library(ggplot2)
my_date_format <- function()
{
function(x)
{
m <- format(x,"%b")
y <- format(x,"%Y")
ifelse(duplicated(y),m,paste(m,y))
}
}
ggplot(df, aes(x = Dates, y = Name)) +
theme_classic() + geom_point(aes(shape = Date_Types), size = 8) +
theme(axis.line.y = element_blank(), axis.ticks = element_blank(),
axis.title = element_blank(), axis.text = element_text(size=22),
legend.text = element_text(size=22), legend.title = element_blank()) +
scale_x_date(date_break = "1 month", labels = my_date_format()) +
geom_vline(aes(xintercept= as.Date("2022-05-01")),
linetype = "dashed", color = "black", size = 1)
This means vertical lines every January, April, July, and October. The desired output would look like this:




