Mapa de calor de 2 cores em R com cor intermediária ancorada em um valor específico

Esta imagem do mapa de calor foi gerada no Excel, mas como eu estou tentando aprender R eu gostaria de saber como fazer um mapa de calor como esse com R.

No momento, esse código está funcionando, mas não como deveria ...

(p <- ggplot(melt(heat), aes(Var2, Var1))
 + geom_tile(aes(fill = value), colour = "white")
 + scale_fill_gradient(low = "red", high = "green"))

Eu gostaria de ter 2 gradientes, verde (maior valor) para branco (o número 1000) para vermelho (valor mais baixo). É possível em R?

conjunto de dados de calor:

> heat[0:10,0:10]
          [,1]     [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]
 [1,] 1000.000    0.000    0.0000    0.0000  757.0317  709.3896  843.7676  932.2801    0.0000 1016.7203
 [2,] 1087.658 1000.000    0.0000    0.0000  935.5829  854.5110  889.5042 1091.4610  929.1611    0.0000
 [3,] 1181.599 1361.953 1000.0000    0.0000    0.0000 1102.1590 1147.1300  984.1374  969.0718 1058.3456
 [4,] 1319.012 1405.954 1187.5215 1000.0000    0.0000 1093.8854 1195.7298 1077.0797 1119.4640 1159.5207
 [5,]    0.000    0.000  909.1927  817.5097 1000.0000    0.0000 1101.2891 1064.6516 1037.1623  990.3974
 [6,]    0.000    0.000    0.0000    0.0000  887.7498 1000.0000 1015.9835 1062.1668 1105.2163  983.2319
 [7,]    0.000    0.000    0.0000    0.0000    0.0000    0.0000 1000.0000  911.0699 1026.1989  951.3572
 [8,]    0.000    0.000    0.0000    0.0000    0.0000    0.0000    0.0000 1000.0000  834.8725  927.6802
 [9,] 1261.824    0.000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000 1000.0000  795.6285
[10,]    0.000 1121.210    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000 1000.0000

questionAnswers(2)

yourAnswerToTheQuestion