Я думаю, что ваш xmin / xmax / ymin / ymax не может быть одинаковым для разных прямоугольников, если вы хотите видеть один цвет для каждого прямоугольника. Если они все одинаковые, вы просто строите один прямоугольник с одной заливкой. Возможно, вы используете разные грани, чтобы увидеть разные прямоугольники, но это трудно понять, не зная вашего полного кода.
Приведенный ниже пример работает без каких-либо проблем, когда xmin / xmax / ymin / ymax, с теми же цветовыми параметрами.
library(tidyverse)
c<- c(1.18,1.18,1.19,1.20,1.20, 1.60, 1.60, 1.52,1.51)
df <- expand.grid(x = (1:3), y = (1:3))
df$ave_temp <- c(1.18,1.18,1.19,1.20,1.20, 1.60, 1.60, 1.52,1.51)
ggplot() + geom_rect(data = df,
aes(xmin = x-0.4,xmax = x + 0.4,
ymin = y-0.4, ymax = y + 0.4,
fill = df$ave_temp) )+
scale_fill_gradient2(low = "yellow", mid = "red", high = "purple")
, что дает следующую цифру: