Este documento apresenta o uso da linguagem R para aplicações em planejamento territorial, incluindo a criação de mapas temáticos e faces de Chernoff para visualização de dados multivariados.
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Introdução à visualização espacial em R
1. INFORMÁTICA APLICADA AO
PLANEJAMENTO TERRITORIAL
Atividade com R
CS3406 - Informática Aplicada ao Planejamento Territorial dezembro de 2017
Aula 10
Carolina Moutinho Duque de Pinho
carolina.pinho@ufabc.edu.br
Vitor Vieira Vasconcelos
vitor.vasconcelos@ufabc.edu.br
Guilherme Frizzi
guilherme.frizzi@ufabc.edu.br
2. ● O que é o R e o R Studio
● Conhecendo o R Studio
● Criação de mapas coropléticos e de símbolos proporcionais com R
● Faces de Chernoff
● Micromaps
● Mapas raster bivariados
ATIVIDADE COM O R
3. Conhecendo o R : uma visão mais que estatística / Marcio Pupin de. Mello, Luiz Alexandre Peternelli. – Viçosa, MG : Ed. UFV, 2013. 222p
O QUE É O R?
R é uma linguagem e também um ambiente de desenvolvimento
integrado que permite cálculos estatísticos, operações
matemáticas, manipulação de vetores e matrizes, confecção de
gráficos, mapas e manipulação de bancos de dados, entre outros.
4. Yuri M. Zhukov. Applied Spatial Statistics in R. IQSS, Harvard University. January 19, 2010
O QUE É O R?
5. Yuri M. Zhukov. Applied Spatial Statistics in R. IQSS, Harvard University. January 19, 2010
O QUE É O R?
Existem diversas GUI (Interface gráfica do utilizador)
para R, sendo a mais recentemente o RStudio.
RGUI – vem com uma versão pré-compilada do R para Windows.
Tinn-R– Um ambiente de desenvolvimento de código aberto
Java Gui for R – Editor baseado em Java
Deducer – Interface gráfica para análise de dados orientado ao uso de
menus
Rattle GUI – Interface gráfica multi-plataforma
R Commander – Interface gráfica multi-plataforma
RExcel – usando R e Rcmdr a partir do Microsoft Excel.
RKWard – Interface de usuário gráfica extensível e IDE para R.
RStudio – multi-plataforma
6. Janela com os objetos criados na sessão atual
do R e uma aba onde o histórico dos comandos
executados no Console pode ser visualizado
CONHECENDO O R
7. Files: conteudo do diretório de
trabalho atual
Cria, deleta e renomeia novas pastas e define
como diretório de trabalho
CONHECENDO O R
8. Plots: exibe os gráficos gerados
pelo R
Exporta como imagem e PDF
CONHECENDO O R
9. Packages: apresenta os pacotes
instalados e os carregados
Possível procurar novos Packages para instalar
e fazer o update
library(boot) #Para carregar um
Package já instalado, basta usar o
comando acrescentando o nome do
pacote entre os parênteses
Sempre que iniciar o R e quiser usar um pacote
que não é, por padrão, carregado na
inicialização do R, você terá que carregá-lo
manualmente.
CONHECENDO O R
12. É possível abrir uma janela
onde os scripts são salvos
CONHECENDO O R
13. Run Objetos criados
x <- 4:20 #criando x
y <- x^2 #criando y (igual x ao quadrado)
plot (x,y) # plota os pares (x,y)
CONHECENDO O R
14. O conjunto de dados InsectSprays já vem contido
no pacote datasets.
Contém dados de um experimento onde foram
contabilizados o número de insetos sobreviventes
após a aplicação de seis diferentes inseticidas. Os
dados estão estruturados em duas colunas, count
com número de insetos vivos e spray com nome do
inseticida (BEALL, 1942)
??InsectSprays
Beall, G., (1942) The Transformation of data from entomological field experiments, Biometrika, 29, 243–262.
CONHECENDO O R
15. boxplot (count~spray,
+ data = InsectSprays,
+ xlab = "Inseticida",
+ ylab = "Insetos sobreviventes",
+ main = "Boxplot",
+ notch = F,
+ col = 3)
Run
#boxplot e formula
#conjunto de dados
#título
#texto eixo x
#texto eixo y
#teste para mediana
#cor verde
??InsectSprays
Beall, G., (1942) The Transformation of data from entomological field experiments, Biometrika, 29, 243–262.
CONHECENDO O R
20. ABC <- readOGR(dsn = "Dados",
layer = "abc") #Vai abrir o shapefile
com nome “abc” contido na pasta
Dados e vai dar o nome de “ABC”
Enter
MAPAS COROPLÉTICOS
29. Não tem no básico,
precisamos instalar
Com o pacote tmap, os mapas temáticos podem ser gerados com grande
flexibilidade. A sintaxe para criar gráficos é semelhante à do ggplot2. O
pacote add-on tmaptools contém funções de ferramentas para leitura e
processamento de shape files.
MAPAS COROPLÉTICOS
30. library(tmap) #habilita o Package tmap
vignette("tmap-nutshell") #Abre o help
do tmap com exemplos de códigos
MAPAS COROPLÉTICOS
31. qtm(shp = ABC, fill = "pop", fill.palette =
"Blues") #Mostrando nosso mapa ABC
classificado com a coluna “pop” por
palheta de cores azul
MAPAS COROPLÉTICOS
Difícil análise com dados absolutos!
32. qtm(shp = ABC, fill = "densidade", fill.palette =
"Blues") #Mostrando nosso mapa ABC
classificado com a coluna “densidade” por
palheta de cores azul
Melhor com valores relativos
33. qtm (shp =ABC, fill = "densidade", fill.palette="Blues")+
tm_shape(ABC)+
tm_bubbles("pop","red",border.col="black",border.lwd=1,
size.lim=c(0,11e6),sizes.legend=c(1e5,2e5,4e5),
title.size="Populaçãototal")+
tm_layout(legend.position=c(0.75,0.09))+
tm_compass(position=c(0.65,0.15,color.light="grey90"))+
tm_scale_bar(breaks = NULL, width = NA, size = 0.5, text.color = NA,
color.dark = "black", color.light = "white", lwd = 1, position = NA,
just = NA)
#Mostrando nosso mapa ABC classificado com a coluna “densidade” por palheta
de cores azul + “bolhas” em vermelho com limites pretos de tamanhos variando
de 0 a 11e6+ legenda com 3 tamanhos e título de “População total”
34. library (tmaptools) #habilita o Package
tmaptools
ABC_WGS84 <- spTransform(ABC,
CRS("+init=epsg:4326")) #transforma o ABC para
WGS84
36. tm_shape(imagem) + tm_raster() + tm_shape(ABC_WGS84) +
tm_fill("densidade", fill.title = "densidade 2010", scale = 0.8, alpha = 0.5) +
tm_layout(legend.position = c(0.83,0.02))
#abre o nosso arquivo de “imagem”, o shape do ABC em WGS,
preenchido por densidade, com escala de 0.8 e transparência de
0,5
38. FACES DE CHERNOFF
KLEINER, Beat; HARTIGAN, John A. Representing points in many dimensions by trees and castles. Journal of the American Statistical Association, v. 76, n.
374, p. 260-269, jun. 1981.
considerado atualmente um dos pais dos gráficos estatísticos, William Playfair (1801), disse que “nenhum
estudo é menos sedutor ou mais tedioso que a Estatística”
Desafio dos dados multivariados. A diversidade de variáveis
dificulta a representação.
Surgiram na década de 1970, diversas propostas de representação
visual, compondo um grupo de técnicas denominado “iconográficas”
. Sua propriedade fundamental é o mapeamento das variáveis em
características particulares de ícones.
Cada elemento do ícone representa um atributo dos dados
multidimensionais , facilitando o agrupamento de indivíduos e a
descoberta de relações e interações entre variáveis.
39. FACES DE CHERNOFF
KLEINER, Beat; HARTIGAN, John A. Representing points in many dimensions by trees and castles. Journal of the American Statistical Association, v. 76, n.
374, p. 260-269, jun. 1981.
Cada característica na face vai
representar um atributo no dado
multivariado
40. FACES DE CHERNOFF
MapCarte 353/365: Life in Los Angeles by Eugene Turner, 1977
Riqueza
Taxa de desemprego
Estresse urbano
Proporção de população branca
41. FACES DE CHERNOFF
SILVA, Levi Alã Neves dos. Contribuição da mineração de dados e da otimização heurística para a interpretação dos dados da produção científica brasileira .
2011. Dissertação (Mestrado em Ciências da Informação) – Universidade Federal da Bahia, Salvador, 2011.
quantidade de periódicos nacionais por “altura do rosto”;
periódicos internacionais por “largura do rosto”;
trabalhos completos publicados em Anais e eventos pelo “tamanho do nariz”;
capítulos de livros pela “altura dos olhos”;
resumos em periódicos especializados pela “abertura da boca”; e
resumos em anais por “tamanho da boca”.
44. faces (tabela2 [,9:29])
#usa todas as feições e apenas às colunas de 9 a 29
altura do rosto
largura do rosto
estrutura do rosto
altura da boca
largura da boca
sorridente
altura dos olhos
largura dos olhos
altura do cabelo
largura do cabelo
estilo de cabelo
altura do nariz
largura do nariz
largura da orelha
altura da orelha
FACES DE CHERNOFF
45. faces (tabela2 [,9:29], face.type=0)
#usa todas as feições e apenas às colunas de 9 a 29 e deixa sem cores
altura do rosto
largura do rosto
estrutura do rosto
altura da boca
largura da boca
sorridente
altura dos olhos
largura dos olhos
altura do cabelo
largura do cabelo
estilo de cabelo
altura do nariz
largura do nariz
largura da orelha
altura da orelha
FACES DE CHERNOFF
46. faces (tabela2 [,9:29], labels = tabela2$MUNICIPIO, face.type=0)
#usa todas as feições e apenas às colunas de 9 a 29, coloca labels como
MUNICÍPIO e deixa sem cores
altura do rosto
largura do rosto
estrutura do rosto
altura da boca
largura da boca
sorridente
altura dos olhos
largura dos olhos
altura do cabelo
largura do cabelo
estilo de cabelo
altura do nariz
largura do nariz
largura da orelha
altura da orelha
FACES DE CHERNOFF
47. plot(tabela2[,9:10],bty="n") #plota às colunas 9 e 10 da tabela2 com tipo
sem borda
a<-faces(tabela2[1:7, 9:29],plot=FALSE) #salva às faces de todas às feições
com os atributos das colunas 9 a 29
plot.faces(a,tabela2[1:7,9],tabela2[1:7,10],width=2,height=2) #plota as faces
“a” nos tamanhos 2
FACES DE CHERNOFF
48. Resultado
E com nome dos municipios?
plot.faces(a,tabela2[1:7,9],tabela2[1:7,10],width=2,height=2,labels =
tabela2$MUNICIPIO) #com nome dos municipios
FACES DE CHERNOFF
49. MicroMaps são uma maneira poderosa de exibir dados onde a exibição inclui mapas pequenos e leves para
fornecer informações geográficas sobre os dados. Esta informação geográfica fornece pistas sobre a
relação entre os dados que podem levar a mais informações.
MICROMAPS
51. #Packages para instalar e carregar:
install.packages("maptools")
install.packages("RColorBrewer")
install.packages("rgdal")
install.packages("sp")
install.packages("ggplot2")
install.packages("grid")
install.packages("micromap")
library(maptools)
library(RColorBrewer)
library(rgdal)
library(sp)
library(ggplot2)
library(grid)
library(micromap)
data("USstates") #abrimos os dados vetoriais dos estados americanos
head(USstates@data) #vemos seus atributos
plot(USstates) #plota o mapa dos estados americanos
statePolys <- create_map_table(USstates, 'ST') #transforma o mapa em coordenadas
head(statePolys) #mostra a tabela
data("edPov") #abre os dados de educação e pobreza dos estados americanos
#vemos seus atributos
#plota o mapa dos estados americanos
#mostra a tabela
MICROMAPS
52. # construindo o micromaps
lmplot(stat.data=edPov,
map.data=statePolys,
panel.types=c('labels', 'dot', 'dot','map'),
panel.data=list('state','pov','ed', NA),
ord.by='pov',
grouping=5, median.row=TRUE,
map.link=c('StateAb','ID'))
#dado não espacial
#dado espacial
#estrutura do micromaps
#variaveis selecionadas
#variavel que ordena
#unidades por agrupamento
#colunas para “join
MICROMAPS
53. poligonos <- create_map_table(ABC, 'ID')
#transforma o mapa em coordenadas de ponto
lmplot(stat.data=tabela2,
map.data=poligonos,
panel.types=c('labels', 'dot', 'dot','map'),
panel.data=list('MUNICIPIO','Pobres','PIBperCap',
NA),
ord.by='Pobres',
grouping=3, median.row=TRUE,
plot.panel.spacing=1,
map.link=c('Com','region'))
% de pobres / PIB per cap
MICROMAPS
54. MULTIVARIADO COM IMAGENS
● Dois rasters da mesma área;
● Com variáveis diferentes;
● Com a mesma resolução e projeção;
● Relação entre duas variáveis espaciais (raster)
57. MULTIVARIADO COM IMAGENS
#Função para gerar o mapa bivariado
bivariate.map<-function(rasterx, rastery, colormatrix=col.matrix, nquantiles=10){
quanmean<-getValues(rasterx)
temp<-data.frame(quanmean, quantile=rep(NA, length(quanmean)))
brks<-with(temp, quantile(temp,na.rm=TRUE, probs = c(seq(0,1,1/nquantiles))))
r1<-within(temp, quantile <- cut(quanmean, breaks = brks, labels = 2:length(brks),include.lowest = TRUE))
quantr<-data.frame(r1[,2])
quanvar<-getValues(rastery)
temp<-data.frame(quanvar, quantile=rep(NA, length(quanvar)))
brks<-with(temp, quantile(temp,na.rm=TRUE, probs = c(seq(0,1,1/nquantiles))))
r2<-within(temp, quantile <- cut(quanvar, breaks = brks, labels = 2:length(brks),include.lowest = TRUE))
quantr2<-data.frame(r2[,2])
as.numeric.factor<-function(x) {as.numeric(levels(x))[x]}
col.matrix2<-colormatrix
cn<-unique(colormatrix)
for(i in 1:length(col.matrix2)){
ifelse(is.na(col.matrix2[i]),col.matrix2[i]<-1,col.matrix2[i]<-which(col.matrix2[i]==cn)[1])}
cols<-numeric(length(quantr[,1]))
for(i in 1:length(quantr[,1])){
a<-as.numeric.factor(quantr[i,1])
b<-as.numeric.factor(quantr2[i,1])
cols[i]<-as.numeric(col.matrix2[b,a])}
r<-rasterx
r[1:length(r)]<-cols
return(r)}
# carregar o primeiro raster ("amphibians.grd")
raster.amphibians<-raster(choose.files("amphibians.grd"))
# carregar o segundo raster ("reptiles.grd")
raster.reptiles<-raster(choose.files("reptiles.grd"))
Vai abrir uma janela para
selecionarmos o arquivo
58. MULTIVARIADO COM IMAGENS
#plotando o mapa de anfibios
my.colors = colorRampPalette(c("white","lightblue",
"yellow","orangered", "red"))
plot(raster.amphibians,frame.plot=F,axes=F,box=F,add=F,leg
end.width=1,legend.shrink=1,col=my.colors(255))
map(interior=T,add=T)
59. MULTIVARIADO COM IMAGENS
#plotando o mapa de repteis
my.colors = colorRampPalette(c("white","lightblue",
"yellow","orangered", "red"))
plot(raster.reptiles,frame.plot=F,axes=F,box=F,add=F,legend.
width=1,legend.shrink=1,col=my.colors(255))
map(interior=T,add=T)
60. MULTIVARIADO COM IMAGENS
#usando a função do mapa bivariado
bivmap<-bivariate.map(raster.amphibians,raster.reptiles,
colormatrix=col.matrix, nquantiles=10)
#plotando o mapa bivariado
plot(bivmap,frame.plot=F,axes=F,box=F,add=F,legend=F,col=
as.vector(col.matrix))
map(interior=T,add=T)
61. OUTROS PACOTES
maptools, ggmap, cartography e quickmapr: visualização de mapas (como o tmap)
TgoogleMaps e googleVis: visualização de dados sobre google maps
RColorBrewer: paletas de cores para mapas
GeoXp, leaflet, mapview e mapedit: análise exploratória espacial (estilo Geovista)
raster: análise de bases raster
rasterVis: visualização univariada e multivariada de rasters
KernSmooth: mapas de kernel
spatstat, spdep e gstat: interpolação e análise espacial estatística
cartogram e tilegramsR: cartogramas
RQGIS, RSAGA, rgrass7: usar funções do QGis, SAGA e Grass dentro do R
RStoolbox: sensoriamento remoto
62. Fim!
Qualquer dúvida
Carolina Moutinho Duque de Pinho
carolina.pinho@ufabc.edu.br
Vitor Vieira Vasconcelos
vitor.vasconcelos@ufabc.edu.br
Guilherme Frizzi
guilherme.frizzi@ufabc.edu.br