R Mapa de calor con valores por debajo de 0 rojo, por encima de 0 gradiente de azul

Tengo un mapa de calor que varía de -100 a 100. Me gustaría que cualquier valor que esté por debajo de 0 sea rojo, mientras que los valores por encima de 0 son un gradiente de azul.

He visto ejemplos de cómo obtener gradientes de rojo y azul, pero no para que el rojo sea rojo constante.

Lo que he probado hasta ahora:

bk = c(seq(-100,-0.1,length=1), seq(-0.1,0.1,length=1), seq(0.1,100,length=100))
rc1 <- colorRampPalette(colors = c("red"))
rc2 <- colorRampPalette(colors = c("blue"))(length(bk)-1)
hmcols <- c(rc1, rc2)

pero me sale el error

"Error in image.default(1:nc, 1:nr, x, xlim = 0.5 + c(0, nc), ylim = 0.5 +  : 
  must have one more break than colour"

Respuestas a la pregunta(1)

Su respuesta a la pregunta