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"