Ajudar a escolher o esquema de coloração bivariada mais adequado para o mapeamento de coropletas

10

Estou tentando sobrepor uma variável nominal (2 categorias - de sequeiro vs irrigado) em um mapa de coropletas sobre uma variável numérica.

insira a descrição da imagem aqui

Para destacar a diferença de padrão entre as duas categorias, descrevi uma categoria com uma cor diferente (áreas irrigadas em "vermelho"), enquanto as não coloridas são áreas de sequeiro.

No entanto, o mapa parece confuso e o contorno se mistura com tons mais escuros da variável numérica.

Estou tentando evitar o uso de dois esquemas de sombreamento de cores diferentes para representar as duas categorias, pois acho que ocultariam a distribuição geral da variável subjacente.

Existe uma maneira melhor de representar essa classificação bivariada usando o pacote ggplots2 no R (que eu estou usando atualmente para criar o mapa em anexo)?

Esses mapas serão impressos em papel.

varungoel123
fonte
Considere calcular a distância euclidiana nas bordas da área de irrigação. Mais detalhes aqui: gis.stackexchange.com/q/53163/8104
Aaron
@ Aaron, obrigado pelo link, o sombreamento direcional pode funcionar para isso, e eu poderia usar a ferramenta de buffer para desenhar essas áreas em R. Minha única preocupação, porém, seria o tamanho comparativamente pequeno dos polígonos que podem ser prejudicados pelo conjunto mais amplo. esboços. Eu vou tentar isso.
varungoel123
@ varungoel123 Publiquei uma solução R usando os pacotes rastere rasterVisque podem lhe interessar.
Thiagoveloso

Respostas:

7

Em vez de contornos para indicar as áreas irrigadas, você deve usar algo como um padrão de preenchimento transparente (por exemplo, linhas, hachuras). Um exemplo seria semelhante a este:

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

ou apenas google "padrões de preenchimento de mapa" para obter uma visão geral das opções. Usar contornos apenas para as áreas irrigadas daria a impressão de que a irrigação não é um fenômeno contínuo.

Chris P
fonte
Essa é uma ótima sugestão. Existe uma maneira de fazer isso no ggplot2 ou em algum outro pacote no R? Tenho em torno de 60 a 70 mapas nos quais a demarcação de áreas de sequeiro vs irrigadas permanece constante. Com ggplot2, eu era capaz de automatizar a produção de mapas, algo que eu não tenha sido capaz de alcançar usando ArcMap ou Qgis
varungoel123
Não estou familiarizado com ggplot2 ou R. No entanto, esse padrão de preenchimento é bastante padrão e não deve ser muito difícil de alcançar. Eu sei como fazer isso no Qgis ou ArcMap. Nos dois programas, você pode salvar esse estilo depois de defini-lo e reutilizá-lo. A automação deve muito bem ser possível com ambos. Um script python ou arcpy pode fazer o trabalho por você.
Chris P
1
Infelizmente ggplot não é bom em padrões de preenchimento (mas veja aqui uma alternativa)
Cengel
Qgis na versão 2.0.1 ofertas produção de mapas automatizado bem
Zbynek
1

Recentemente, tive que fazer um mapa semelhante. A solução que eu encontrei usa o pacote rasterVis, em vez do ggplot2 (a propósito, que é um pacote incrível).

No meu caso, eu tinha um mapa de tendências ao longo do tempo (que também é uma variável numérica) e também um mapa mostrando a significância da tendência (obtida de um teste estatístico).

No meu caso, eu queria plotar o mapa de significância no topo do mapa numérico, algo semelhante a um padrão "pontilhado", para mostrar onde o nível de confiança era mais alto.

Esse é aproximadamente o código que eu usei para criar o 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))

No seu caso, você pode alterar o código:

1) criar uma varredura "binária", na qual, por exemplo, 0 é alimentado por chuva e 1 é irrigado e plotado da mesma forma que eu fiz ou;

2) criar duas máscaras diferentes, uma para sequeiro e outra para irrigação, e plotar os dois como objetos diferentes (por exemplo, círculos para sequeiro e cruzamentos para sequeiro).

Eu acho que a segunda alternativa faria o mapa parecer muito "poluído" visualmente, mas você sempre pode controlar os parâmetros dos pontos consultando a spdocumentação do pacote - especificamente ?sp.points.

Espero que ajude.

thiagoveloso
fonte