I am plotting values in SpeedClass as rasterfile. I want to add text to the each tile to show the AvgSpeed from column 3.
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:
Read more here: Source link