Skip to content
Prev 393537 / 398503 Next

Date order question

?s 21:08 de 04/01/2023, Thomas Subia escreveu:
Hello,

Transform `date` into a real date column in a dplyr pipe so that the 
original data remains unchanged and plot with scale_x_date which will 
allow for control over the axis breaks and labels.

The only problem are now the text annotations. The x coordinate is 
numeric and it must also be a date object. Below I solve this by 
creating a annotations data set ann_data. In geom_text the data argument 
is now another one, but one layer only annotates all areas.


library(ggplot2)
library(cowplot)
library(dplyr)

date<-c("12-29","12-30","01-01")
PT <- c(.106,.130,.121)
data <- data.frame(date,PT)

ann_data <- data.frame(
   y = c(0.1, 0.225, 0.28, 0.45, 0.8, -0.05),
   text = c("Very Good", "Good", "Marginal", "Inadequate", "OOC", "PT 
Not Done")
)
ann_data$x <- as.Date("2022-12-31")


data %>%
   mutate(newyear = ifelse(substr(date, 1, 2) > "01", "2022-", "2023-"),
          date = as.Date(paste0(newyear, date))) %>%
   ggplot(aes(x = date, y = PT)) +
   geom_point(size = 4) +
   geom_line() +
   geom_hline(yintercept = c(1,.60,0,.30,.25,.2)) +
   #
   geom_text(
     data = ann_data,
     mapping = aes(x = x, y = y, label = text),
     size = 5, fontface = "bold"
   ) +
   scale_x_date(date_breaks = "1 day", date_labels = "%m-%d") +
   #
 
scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.2))+
   theme_cowplot()



Hope this helps,

Rui Barradas