Aiuta a scegliere lo schema colorante per la mappatura coropletica bivariata più adatto


10

Sto cercando di sovrapporre una variabile nominale (2 categorie - piove a dirotto o irrigate) in una mappa coropletica su una variabile numerica.

inserisci qui la descrizione dell'immagine

Al fine di evidenziare la differenza di modello tra le due categorie, ho delineato una categoria con un colore diverso (aree irrigate in "rosso"), mentre quelle non colorate sono aree piovose.

Tuttavia, la mappa risulta ingombra e il contorno si mescola con sfumature più scure della variabile numerica.

Sto cercando di evitare di utilizzare due diversi schemi di sfumatura del colore per rappresentare le due categorie, poiché ritengo che nasconderebbe la distribuzione complessiva della variabile sottostante.

C'è un modo migliore per rappresentare questa classificazione bivariata usando il pacchetto ggplots2 in R (che attualmente sto usando per creare la mappa allegata)?

Queste mappe verranno infine stampate su carta.


Prendi in considerazione il calcolo della distanza euclidea sui bordi dell'area di irrigazione. Maggiori dettagli qui: gis.stackexchange.com/q/53163/8104
Aaron

@Aaron, grazie per il link, l'ombreggiatura direzionale potrebbe funzionare per questo, e potrei usare lo strumento buffer per disegnare quelle aree in R. La mia unica preoccupazione, tuttavia, sarebbe la dimensione relativamente piccola dei poligoni che potrebbero essere confusi dal più ampio lineamenti. Lo proverò.
varungoel123,

@ varungoel123 Ho pubblicato una soluzione R utilizzando i pacchetti rastere rasterVische potrebbero interessarti.
thiagoveloso,

Risposte:


7

Invece di contorni per indicare le aree irrigate dovresti usare qualcosa di simile a un motivo di riempimento trasparente (ad es. Linee, opuscoli). Un esempio sarebbe simile al seguente:

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

o semplicemente google "schemi di riempimento della mappa" per ottenere una panoramica delle opzioni. L'uso dei contorni solo per le aree irrigate darebbe l'impressione che l'irrigazione non sia un fenomeno continuo.


Questo è un ottimo suggerimento. C'è un modo per farlo in ggplot2 o qualche altro pacchetto in R? Ho circa 60-70 mappe in cui la demarcazione delle aree irrigate rispetto a quelle irrigate rimane costante. Con ggplot2, sono stato in grado di automatizzare la produzione di mappe, cosa che non sono stato in grado di realizzare usando ArcMap o Qgis
varungoel123

Non ho familiarità con ggplot2 o R. Tuttavia, questo modello di riempimento è una cosa abbastanza standard e non dovrebbe essere troppo difficile da ottenere. So come farlo in Qgis o ArcMap. In entrambi i programmi puoi salvare quello stile dopo averlo definito e riutilizzarlo. L'automazione dovrebbe essere possibile con entrambi. Uno script python o arcpy potrebbe fare il lavoro per te.
Chris P,

1
Sfortunatamente ggplot non è bravo a riempire i modelli (ma vedi qui per un'alternativa)
cengel,

QGis nella versione 2.0.1 offre anche la produzione automatica di mappe
Zbynek,

1

Di recente ho dovuto fare una mappa simile. La soluzione che mi è venuta in mente usa il pacchetto rasterVis, piuttosto che ggplot2 (che è comunque un pacchetto fantastico).

Nel mio caso, ho avuto una mappa delle tendenze nel tempo (che è anche una variabile numerica) e anche una mappa che mostra il significato della tendenza (ottenuta da un test statistico).

Nel mio caso, volevo tracciare la mappa dei significati in cima alla mappa numerica, qualcosa di simile a un modello "a punteggiatura", per mostrare dove il livello di confidenza era più alto.

Questo è approssimativamente il codice che ho usato per creare la mappa.

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))

Nel tuo caso, puoi modificare il codice:

1) creare un raster "binario", dove ad esempio 0 viene irrigato e 1 viene irrigato, e traccialo come ho fatto io;

2) la creazione di due diverse maschere, una per la pioggia e una per l'irrigazione, e tracciare entrambe come oggetti diversi (ad esempio cerchi per la pioggia e croci per la pioggia).

Penso che la seconda alternativa renderebbe la mappa troppo visivamente "inquinata", ma puoi sempre controllare i parametri dei punti consultando la spdocumentazione del pacchetto - in particolare ?sp.points.

Spero che sia d'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.