2011-03-01 17 views
5

Me temo que tengo una pregunta spplot() otra vez.spplot() - make color.key se ve bien

Quiero que los colores en mi spplot() representen valores absolutos, no valores automáticos ya que spplot lo hace de forma predeterminada.

Lo logro haciendo un factor de la variable que quiero dibujar (usando el comando cut()). Esto funciona muy bien, pero la clave de color no se ve nada bien.

verlo usted mismo:

library(sp) 

data(meuse.grid) 
gridded(meuse.grid) = ~x+y 

meuse.grid$random <- rnorm(nrow(meuse.grid), 7, 2) 
meuse.grid$random[meuse.grid$random < 0] <- 0 
meuse.grid$random[meuse.grid$random > 10] <- 10 
# making a factor out of meuse.grid$ random to have absolute values plotted 
meuse.grid$random <- cut(meuse.grid$random, seq(0, 10, 0.1)) 

spplot(meuse.grid, c("random"), col.regions = rainbow(100, start = 4/6, end = 1)) 

¿Cómo puedo tener la color.key a la derecha se ven bien - Me gustaría tener un menor número de garrapatas y menos etiquetas (tal vez sólo una etiqueta en cada extremo de la color.key)

¡Gracias de antemano!

[editar] Para aclarar lo que quiero decir con valores absolutos: Imagine un mapa donde quiero mostrar la altura del mar. Seaheight = 0 (que es el valor mínimo) siempre se debe mostrar en azul. Seaheight = 10 (que, solo por el ejemplo, es el valor máximo) siempre debe mostrarse en rojo. Incluso si no hay mar en las regiones que se muestran en el mapa, esto no debería cambiar. Lo logro con el comando cortar() en mi ejemplo. Entonces esta parte funciona bien

ESTO ES LO QUE MI PREGUNTA ES SOBRE Lo que no me gusta es la descripción del color en el lado derecho. Hay 100 tics y cada tic tiene una etiqueta. Quiero menos tics y menos etiquetas.

+1

Nunca he usado spplot, pero [RColorBrewer] (http://cran.r-project.org/web/packages/RColorBrewer/index.html) parece que puede ser útil aquí. Agregaría 'library (sp)' en la parte superior de tu código allí para que la gente pueda copiar/pegar/ejecutar directamente. – Chase

+1

¿qué quieres decir con valores absolutos? ¿solo quieres redondear los valores aleatorios a enteros? – mdsumner

+0

gracias Chase! biblioteca añadida (sp)! ¡Pensé que RColorBrewer es solo para seleccionar colores! ¡Lo echaré un vistazo! – speendo

Respuesta

6

El camino a seguir es usar el atributo colorkey. Por ejemplo:

## labels 
labelat = c(1, 2, 3, 4, 5) 
labeltext = c("one", "two", "three", "four", "five") 

## plot 
spplot(meuse.grid, 
    c("random"), 
    col.regions = rainbow(100, start = 4/6, end = 1), 
    colorkey = list(
     labels=list(
      at = labelat, 
      labels = labeltext 
     ) 
    ) 
) 
0

Primero, no está del todo claro qué es lo que usted quiere aquí. Hay muchas maneras de hacer que el color.key se vea "bien" y eso es entender primero los datos que se pasan a spplot y lo que se le pide. cut() proporciona intervalos con formato completo como (2.3, 5.34) que necesitarán ser manejados de una manera diferente, aumentando los márgenes en la trama, formato específico y espaciado para las etiquetas, etc. etc. Esto simplemente no puede ser lo que en última instancia que desee.

Tal vez lo que desea valores enteros, redondeados a partir de los valores de entrada?

library(sp) 

data(meuse.grid) 
gridded(meuse.grid) = ~x+y 

meuse.grid$random <- rnorm(nrow(meuse.grid), 7, 2) 

Ronda de los valores (o trunc(), ceil(), suelos() ellos...)

meuse.grid$rclass <- round(meuse.grid$random) 

spplot(meuse.grid, c("rclass"), col.regions = rainbow(100, start = 4/6, end = 1)) 
+0

No, quiero mostrar las respuestas a un cuestionario en diferentes regiones. Las posibles respuestas al cuestionario son 0, 1, 2, ..., 10. Tomar el promedio de cada pregunta en cada región me da valores decimales (aunque esta estadística no es muy buena, ya que las respuestas fueron discretas). Digamos que el valor mínimo es 5.5 y el valor máximo es 8.5. No quiero que mi mapa muestre 5.5 como azul y 8.5 como rojo. Quiero que 0 (si existe) se muestre como azul y 10 (si existe) se muestre como rojo. Eso es lo que quiero decir con valores absolutos. PERO no quiero que todos los valores se muestren como ticks en color.key. – speendo

+0

¿significa que no debería mostrarse nada con un valor mayor que 0 y menor que 10? poner esto en la pregunta para salvar a las personas que tienen que buscar en los comentarios información crucial – mdsumner

+0

no! eso significa que cualquier cosa menor que 0 y mayor que 10 no se debe mostrar. De hecho, todo lo que no sea la etiqueta de la derecha debería ser exactamente como en mi ejemplo. No quiero tantos tics y tantos subtítulos en la etiqueta de la derecha. todo lo demás debería ser igual. Voy a señalar eso en mi pregunta – speendo