Inserindo caracteres em cartogramas

Olá a todos! No post anterior mostrei como plotar e configurar cores em mapas usando o R e a biblioteca Maptools. Hoje irei avançar nessa técnica mostrando como inserir caracteres alfa-numéricos plotados usando as coordenadas geográficas como referência.
Para replicar este post, você vai precisar de dois arquivos: o shapefile e os dados dos resultados eleitorais para prefeito que estão no final do post.

 

(1) Chamando o Shapefile

library(maptools)
gpclibPermit()

brasil <- readShapePoly(file.choose()) # localize o arquivo "Brasil.shp"

summary(brasil)

Os dados na base “prefeitos12.txt” estão salvos separados por um tab. No R, mostramos isso como (sep = “\t”), Veja abaixo:

(2) Processando os Dados

y <- read.delim(file.choose(), header=T, sep="\t") # localize o arquivo "prefeitos12.txt"

x <- attr(brasil, "data")

x$indice <- 1:dim(x)[1]

dados <- merge(x, y,  by = "UF")

dados <- dados[order(dados$indice), ] #ordenar

Agora que já temos no ambiente do R as coordenadas geográficas e os dados a serem plotados, precisamos dividir os dados em categorias e atribuir cores à elas. Vamos dividir o vetor de porcentagens de prefeituras ganhas pelo Partido dos Trabalhadores  em 5 intervalos: até 5% do total de prefeituras do estado, de 5 a 10, de 10 a 15, 15 a 20 e mais do que 20%. Acompanhe esse processo a seguir.

(3) Atribuindo as cores

intervalos <- c(-Inf,5,10,15,20,Inf) # este objeto vai cortar as porcentagens nos valores informados.

cortes <- cut((dados$PT/dados$tMUN)*100, intervalos, include.lowest=TRUE) #cortei as % em 5 níveis

(niveis <- levels(cortes))

cores <- palette(c("#F1FF6D", "#FFE659", "#FFA428", "#FE7315", "#F8561D"))

levels(cortes) <- cores

O processo acima pode ser simplificado com funções integradas ao R, como por exemplo na atribuição das cores. Poderíamos simplesmente utilizar as paletas de cores pre-definidas em "palette" como "rainbow", "gray", "heat.colors" etc. Veja no exemplo abaixo.

cores <- heat.colors(length(levels(cortes)))

cores <- rev(heat.colors(length(levels(cortes)), alpha=.8)) # aqui utilizando o inverso da escala.

Experimente fazer outros mapas mudando o valor de alpha [0, 1]. O alpha é uma medida de transparência do plot, onde 1 significa intensidade normal e 0 transparente. Podemos, inclusive,  sobrepor camadas com cores e intensidade diferentes.

(4)  Plotando o cartograma

plot(brasil, border=gray(0.9), lwd=.1, axes = FALSE, las = 1, col=as.character(cortes))

pct <-round(((dados$PT/dados$tMUN)*100), digits = 1)

text(get.Poly(brasil), labels=as.character(pct), cex=.8)

title("% de Prefeitos Eleitos em 2012: PT")

plot(brasil,add=TRUE,lwd=.5)

Se alguma coisa de errado acontecer e você não puder passar os valores no mapa é porque você precisa extrair as coordenadas centróides dos polígonos. Abaixo, deixo uma função que faz isso para nós. Basta copiar e colar na janela de comando do R pressionando “enter” em seguida para executá-la. Repita então a linha de comando:

text(get.Poly(brasil), labels=as.character(pct), cex=.8)

 

Isso é tudo. Até a próxima.

 

Daniel

Para baixar esses dados, basta clicar e salvar no seu computador.

ShapeFile
ShapeFile
Brasil.zip
117.2 KiB
223 Downloads
Details...
Resultados Prefeituras
Resultados Prefeituras
prefeitos12.txt
436.0 B
695 Downloads
Details...

Fatal error: Uncaught Exception: 12: REST API is deprecated for versions v2.1 and higher (12) thrown in /home/storage/4/6f/c7/pesquisamaconica/public_html/metodologiapolitica/wp-content/plugins/seo-facebook-comments/facebook/base_facebook.php on line 1273