r – Adding values as text in raster images – ggplot2

I am plotting values in SpeedClass as rasterfile. I want to add text to the each tile to show the AvgSpeed from column 3.

enter image description here

Here is my code so far:

AllDataSBAvgSpeed <- aggregate(AllDataSB$speed ~ AllDataSB$milepost + AllDataSB$Time, data = 
AllDataSB, mean)
colnames(AllDataSBAvgSpeed)[1] <- "milepost"
colnames(AllDataSBAvgSpeed)[2] <- "Time"
colnames(AllDataSBAvgSpeed)[3] <- "AvgSpeed"

##### DEFINE SPEED CLASSES
AllDataSBAvgSpeed <- mutate(AllDataSBAvgSpeed, SpeedClass = ifelse(AllDataSBAvgSpeed$AvgSpeed 
>= 0 & AllDataSBAvgSpeed$AvgSpeed < 10, "0 to 10mph",                                                           
ifelse(AllDataSBAvgSpeed$AvgSpeed >= 10 & AllDataSBAvgSpeed$AvgSpeed < 20, "10 to 20mph",                                                                       
ifelse(AllDataSBAvgSpeed$AvgSpeed >= 20 & AllDataSBAvgSpeed$AvgSpeed < 30, "20 to 30mph",                                                                                 
ifelse(AllDataSBAvgSpeed$AvgSpeed >= 30 & AllDataSBAvgSpeed$AvgSpeed < 40, "30 to 40mph",                                                                                        
ifelse(AllDataSBAvgSpeed$AvgSpeed >= 40 & AllDataSBAvgSpeed$AvgSpeed < 50, "40 to 50mph",                                                                                             
ifelse(AllDataSBAvgSpeed$AvgSpeed >= 50 , "> 50mph", "NA")))))))

AllDataSBAvgSpeed$SpeedClass <- factor(AllDataSBAvgSpeed$SpeedClass, levels = c("0 to 10mph", 
"10 to 20mph", "20 to 30mph","30 to 40mph", "40 to 50mph", "> 50mph", "NA"))

#######
getNumberPart <- function(AllDataSBAvgSpeed) {
pat <- "(-?(\\d*\\.*\\d+|\\d+\\.))"
strapply(AllDataSBAvgSpeed$milepost, pattern=pat, FUN=as.numeric, simplify=TRUE, empty=NA)
 }

Mileposts <- getNumberPart(AllDataSBAvgSpeed)

AllDataSBAvgSpeed <- cbind(AllDataSBAvgSpeed, Mileposts)

#########
AllDataSBAvgSpeed$Time <- as.POSIXct(AllDataSBAvgSpeed$Time, format = "%H:%M")
AllDataSBAvgSpeed$milepost <- factor(AllDataSBAvgSpeed$milepost)
AllDataSBAvgSpeed <- mutate(AllDataSBAvgSpeed, fct_reorder(AllDataSBAvgSpeed$milepost, 
AllDataSBAvgSpeed$Mileposts, min))
colnames(AllDataSBAvgSpeed)[6] <- "MilepostReorder"

ggplot() +
  geom_raster(data = AllDataSBAvgSpeed , aes(x = Time, y = MilepostReorder, fill = 
SpeedClass))+
  scale_x_datetime(date_breaks="2 hours", labels = time_format("%H:%M", 
tz="America/Los_Angeles",locale = NULL))+
  theme_bw()+
  labs(title = "Congestion Diagram - SB Direction - RITIS Data - Average Day",
       x = "Time (hours)",
       y = "Milepost")+
  scale_fill_manual(values=c("#C00000", "#FF0000", "#FFC000", "#FFFF00", "#92D050", 
"#00B050"))+
  guides(fill=guide_legend(title="Speed"))+
  theme(plot.title = element_text(hjust = 0.5))+
  scale_y_discrete(limits=rev)

Can any one help me with this? I want the end result to look something like this:

enter image description here

Read more here: Source link