If you want a rotatable 3D surface plot, then plotly
is your best bet. You will need to first get the monthly average of temperatures and create a matrix from them.
One option for doing this is using the tidyverse
to pivot to long format, summarize, then pivot to wide format. Here's how to do that, assuming your data frame as loaded from the csv is called temp
library(tidyverse)
library(plotly)
temp %>%
pivot_longer(starts_with('Hour'),
names_to = 'Hour',
values_to = 'Temperature') %>%
group_by(Year, Month) %>%
summarise(Temperature = mean(Temperature, na.rm = TRUE)) %>%
pivot_wider(names_from = Month, values_from = Temperature) %>%
ungroup() %>%
select(-1) %>%
as.matrix() %>%
plot_ly(x = month.name, y = unique(temp$Year), z = .) %>%
add_surface()

A nice alternative 2D way to show this kind of data would be with a heatmap:
temp %>%
pivot_longer(starts_with('Hour'),
names_to = 'Hour',
values_to = 'Temperature') %>%
group_by(Year, Month) %>%
summarise(Temperature = mean(Temperature, na.rm = TRUE)) %>%
ggplot(aes(Year, Month, fill = Temperature)) +
geom_tile() +
scale_fill_viridis_c(option = 1) +
scale_y_continuous(breaks = 1:12,
labels = month.name) +
coord_equal()
