I'm trying to create a climate graph with temperature as a line and precipitation as a bar plot. As the monthly temperatures are below zero the precipitation bars (which start at zero) are to high.
I want them to be at the lowest level of the temperature curve (around -25 on the first y axis) and the second y axis showing 0 at this point. Is there a way to move the data to fit?
#build data frame with temperature and precipitation data
df <- as.data.frame(c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))
colnames(df) <- c("month")
df$month <- factor(df$month, levels = month.abb)
df$celsius <- c(-26.0, -24.5, -18.9, -9.8, -1.0, 7.0, 12.7, 12.3, 6.4, -1.2, -12.7, -21.9)
df$prec_mm <- c(18.7, 16.6, 18.1, 23.6, 30.0, 44.2, 59.8, 69.4, 69.9, 48.4, 35.5, 18.4)
#plot with ggplot2
library(ggplot2)
ggplot(data = df, mapping = aes(x = month, y = celsius, group = 1)) +
geom_bar(mapping = aes(y = prec_mm/2), stat = "identity", color="blue", fill="blue", width = 0.5) +
geom_line(color="red", size=1.5) +
scale_y_continuous("Temperature [°C]",
sec.axis = sec_axis(~ . *2, name = "Precipitation [mm]")
)