9 votos

Ayuda para elegir el esquema de coloreado de mapas bivariados más adecuado

Estoy intentando superponer una variable nominal (2 categorías - secano vs regadío) en un mapa de coropletas sobre una variable numérica.

enter image description here

Para resaltar la diferencia de patrón entre las dos categorías, he señalado una categoría con un color diferente (las zonas de regadío en "rojo"), mientras que las no coloreadas son zonas de secano.

Sin embargo, el mapa se siente desordenado y el contorno se mezcla con los tonos más oscuros de la variable numérica.

Estoy tratando de evitar el uso de dos esquemas de sombreado de color diferentes para representar las dos categorías, ya que creo que ocultaría la distribución general de la variable subyacente.

¿Existe una forma mejor de representar esta clasificación bivariada utilizando el paquete ggplots2 en R (que actualmente lo estoy utilizando para hacer el mapa adjunto)?

Estos mapas acabarán imprimiéndose en papel.

0 votos

Considere el cálculo de la distancia euclidiana en los límites de la zona de riego. Más detalles aquí: gis.stackexchange.com/q/53163/8104

0 votos

@Aaron, gracias por el enlace, el sombreado direccional podría funcionar para esto, y yo podría utilizar la herramienta de búfer para dibujar esas áreas en R. Mi única preocupación, sin embargo, sería el tamaño comparativamente pequeño de los polígonos que pueden ser falseados por los contornos más amplios. Lo probaré.

0 votos

@varungoel123 He publicado una solución en R utilizando el raster y rasterVis paquetes que pueden interesarle.

7voto

Chris P Puntos 1099

En lugar de contornos para indicar las zonas de riego, debería utilizar algo así como un patrón de relleno transparente (por ejemplo, líneas, hachas). Un ejemplo sería similar a este:

http://www.geog.fu-berlin.de/de/Karto/umn_karten/bilder/komb2.png

o simplemente busque en Google "patrones de llenado de mapas" para obtener una visión general de las opciones. Utilizar los contornos sólo para las zonas de regadío daría la impresión de que el riego no es un fenómeno continuo.

0 votos

Es una gran sugerencia. ¿Hay alguna manera de hacer esto en ggplot2 o algún otro paquete en R? Tengo unos 60-70 mapas en los que la demarcación de las zonas de secano frente a las de regadío se mantiene constante. Con ggplot2, he podido automatizar la producción de mapas, algo que no he podido conseguir utilizando ArcMap o Qgis

0 votos

No estoy familiarizado con ggplot2 o R. Sin embargo, este patrón de relleno es algo bastante estándar y no debería ser demasiado difícil de lograr. Sé cómo hacerlo en Qgis o ArcMap. En ambos programas puedes guardar ese estilo una vez definido y reutilizarlo. La automatización debería ser bien posible con ambos. Un python script o arcpy podría hacer el trabajo por ti.

1 votos

Desgraciadamente, ggplot no es bueno para rellenar patrones (pero vea aquí para una alternativa)

1voto

Hace poco tuve que hacer un mapa similar. La solución que se me ocurrió utiliza el paquete rasterVis, en lugar de ggplot2 (que es un paquete impresionante, por cierto).

En mi caso, tenía un mapa de tendencias a lo largo del tiempo (que también es una variable numérica) y también un mapa que mostraba la importancia de la tendencia (obtenida a partir de una prueba estadística).

En mi caso, quería trazar el mapa de significación sobre el mapa numérico, algo parecido a un patrón de "punteado", para mostrar dónde era mayor el nivel de confianza.

Este es aproximadamente el código que he utilizado para crear el mapa.

require(raster)
require(rasterVis)

# Scratch raster objects
data(volcano)
r1 <- raster(volcano)

over <- ifelse(volcano >=160 & volcano <=180, 1, NA) # This is the "mask" raster
r2 <- raster(over)

# And this is the key step:
# To convert the "mask" raster to spatial points
r.mask <- rasterToPoints(r2, spatial=TRUE)

# Plot
levelplot(r1, margin=F) +
layer(sp.points(r.mask, pch=20, cex=0.3, alpha=0.8))

En tu caso, podrías cambiar el código por:

1) crear un raster "binario", en el que por ejemplo 0 sea de secano y 1 de regadío, y trazarlo como he hecho o;

2) crear dos máscaras diferentes, una para el secano y otra para el regadío, y trazar ambas como objetos diferentes (por ejemplo, círculos para el secano y cruces para el regadío).

Creo que la segunda alternativa haría que el mapa se viera demasiado "contaminado" visualmente, pero siempre se pueden controlar los parámetros de los puntos consultando el sp documentación del paquete - en concreto ?sp.points .

Espero que sea de ayuda.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X