Color fijo para valor específico

Estoy tratando de hacer un mapa de temperatura, todo funciona bien, pero no sé cómo tener una paleta de colores fija.

De hecho tengo esto:

rgb.palette <- colorRampPalette(c("blue","green","yellow","orange","red"), 
                                space = "Lab")

image.plot(akima.smooth, 
           col = rgb.palette(NBR.COLORS), 
           main=main_title, 
           horizontal=TRUE,
           axes=TRUE)

Esta solución funciona, pero los colores que se pintan son siempre de azul a rojo.

Por ejemplo, si la temperatura más baja en el mapa es de -10 °C, el color será azul, pero en otro mapa, si la temperatura más baja es de +25 °C, ese color también será azul.

¿Cómo puedo definir un panel de color fijo como:

-30°C => blue
-20°C => light blue
-10°C => dark green
  0°C => green
 10°C => yellow

Si en el mapa 1 la temperatura más baja es -20 quiero "azul claro" y en el mapa 2 si la temperatura más baja es 10°CI quiero color "amarillo".

preguntado el 03 de mayo de 12 a las 18:05

2 Respuestas

Si esto es fields:::image.plot() luego ver los argumentos para funcionar ?image. En particular el breaks Se requiere un argumento para establecer los valores de los límites de los puntos de corte utilizados para dividir los datos de entrada en las clases para el trazado.

El problema que está viendo es que si no configura breaks a continuación, la paleta de colores se está aplicando a la distancia de los datos de entrada. si configuras breaks luego, la paleta de colores se mapea en el rango completo que desea y los datos se asignan a los grupos y, por lo tanto, a los colores, definidos por los puntos de ruptura.

No he incluido un ejemplo en caso de que esto no sea fields:::image.plot()

contestado el 03 de mayo de 12 a las 21:05

@ user1311058 Me alegro de que haya funcionado. Asegúrese de aceptar su respuesta cuando pueda para indicar que esta sesión de preguntas y respuestas concluyó con éxito. Ayuda a otros a saber que se resolvió un problema. Ver el ¿Cómo hago preguntas aquí? parte de las preguntas frecuentes. - gavin simpson

@ user1311058 Gracias por aceptar, pero su respuesta es la más completa y merecedora de aceptar. Puede hacer esto después de un día (¿más o menos?) de publicar su propia respuesta. No me ofenderé si deseleccionas el mío y aceptas el tuyo más tarde; el objetivo es proporcionar el mejor recurso para la programación en la web. - gavin simpson

Usé esta solución:

col = colorRampPalette(c("darkmagenta","blue","green","yellow","orange","red"),
                       space="Lab")(NBR.COLORS) 
breaks = c(seq(-35, 10, length.out=NBR.COLORS/2), 10, 
           seq(10, 35, length.out=NBR.COLORS/2))
image.plot(akima.smooth, col=col, breaks=breaks, main=main_title,
           horizontal=TRUE,axes=TRUE);

contestado el 04 de mayo de 12 a las 08:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.