[R-br] Colorir alguns municípios em um mapa estadual com cores distintas

Wirton Macedo Coutinho wirton_coutinho em yahoo.com.br
Quarta Junho 27 16:54:19 BRT 2012


Boa tarde a todos,

Com as dicas do Augusto Ribas e do prof. Paulo Justiniano, consegui, por meio de um post na internet, resolver o meu problema de colorir com cores distintas alguns municípios do Estado de Goiásem um mapa com extensão shp. O código final, a quem possa interessar, ficou assim:

require(maptools)
map <- readShapePoly(file.choose()) 
summary(map)
map$Nome_Munic


colors <-  c("lightskyblue3", "antiquewhite1", "darksalmon", "cornflowerblue",
             "gray94", "darkkhaki", "darkslategray3", "bisque2")

counties2 <- c("Acreúna", "Chapadão do Céu", "Cristalina", "Montividiu",
               "Palmeiras de Goiás", "Santa Helena de Goiás", "Silvânia") 

counties.all = map$Nome_Munic
n.all       = length(counties.all)
col.map     = numeric(n.all)

for (i in 1:length(counties2)){
  col.map[grep(counties2[i],counties.all)] = runif(1) 
}
c2 = col.map!=0
col.map2=col.map
col.map2[!c2]= gray(0.94)
col.map2[c2]=colors

plot(map,col=col.map2,axes=T) 

legend("topleft", legend=c("Acreúna", "Chapadão do Céu", "Cristalina", "Montividiu",
       "Palmeiras de Goiás", "Santa Helena de Goiás", "Silvânia"), cex=0.9,
       bty="n", fill= c("lightskyblue3", "antiquewhite1", "darksalmon", "cornflowerblue",
       "darkkhaki", "darkslategray3", "bisque2")) 



Obrigado a todos,


Att.,

-----

Wirton Macedo Coutinho
Pesquisador - Fitopatologia
Embrapa Algodão
Rua Oswaldo Cruz, 1143, Centenário
Campina Grande, PB
CEP 58429-095






>________________________________
> De: Augusto Ribas <ribas.aca em gmail.com>
>Para: r-br em listas.c3sl.ufpr.br; Wirton Macedo Coutinho <wirton_coutinho em yahoo.com.br> 
>Enviadas: Segunda-feira, 25 de Junho de 2012 17:27
>Assunto: Re: [R-br] Colorir alguns municípios em um mapa estadual com cores distintas
> 
>http://r-br.2285057.n4.nabble.com/R-br-Apostila-de-R-Jackson-Aquino-td4435177.html
>
>Olhe esse post antigo. Tem um link com uma apostila muito boa pra ter
>uma ideia de como mexer com mapas, o basico.
>Capitulo 11 mata sua duvida e muito mais.
>Em portugues, muito bem escrito, uma sugestão de leitura que vi na
>lista aqui e me ajudou muito.
>
>Em 25 de junho de 2012 16:14, Augusto Ribas <ribas.aca em gmail.com> escreveu:
>> Bom, seu problema é mais ou menos isso.
>>
>> #abrindo pacote pra plotar mapas, assumo que vc ta usando esse, o maptools
>> library(maptools)
>>
>> #lendo um mapa pra exemplo
>> mapa<- readShapeSpatial(system.file("shapes/sids.shp", package="maptools")[1],
>>  IDvar="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66"))
>>
>> #mapa
>> summary(mapa)
>> #informações aqui
>> mapa em data
>> #vamo pega o nome das cidades
>> mapa em data$NAME
>>
>>
>> #o problema que vc ta fazendo isso
>> plot(mapa, axes=TRUE, col=mapa em data$NAME=="Alamance")
>> plot(mapa, col=mapa em data$NAME=="Avery", add=TRUE)
>> plot(mapa, col=mapa em data$NAME=="Buncombe", add=TRUE)
>>
>> #no col vc ta pondo essa informação
>> mapa em data$NAME=="Alamance"
>> #que é sempre 1, logo vc colore de preto, 1 na palleta default é
>> preto, true é igual 1, tem 0 0 0 que é branco e 1 que é preto
>> sum(mapa em data$NAME=="Alamance")
>>
>> #vc precisa de numeros diferentes pra cores
>> #ou o nome da cor pra cidade
>> #ou faze uma palleta
>> #mas assim vc tem numeros diferentes
>> as.numeric(mapa em data$NAME)
>>
>>
>> #e vai sair cores diferentes, olha esse plot, note o que to usando no col.
>> plot(mapa, axes=TRUE, col=as.numeric(mapa em data$NAME))
>>
>> #nesse exemplo vc ta usando essas cores (numeros) pra esses lugares
>> data.frame(cores=as.numeric(mapa em data$NAME),localidade=mapa em data$NAME)
>>
>> #então faz um vetor, com o numero de cidades, e escrever "black",
>> "blue", as cores que vc quer por cidade, ou usa numeros, ou usa uma
>> palleta pronta, tipo as que vem no pacote Rcolorbrewer.
>>
>> Bem espero ter ajudado.
>>
>> Em 25 de junho de 2012 13:00, Wirton Macedo Coutinho
>> <wirton_coutinho em yahoo.com.br> escreveu:
>>> Boa tarde pessoal,
>>>
>>> Gostaria de saber se alguém tem alguma dica de como colorir alguns
>>> municipios em um mapa estadual (extensão shp) com cores distintas.
>>>
>>> Preciso colorir 7 municipios no mapa do Estado de Goiás com cores distintas
>>> (cada município com uma cor diferente), mas não estou conseguindo.
>>>
>>> Tenho tentado, sem sucesso, da seguinte forma:
>>>
>>> plot(mapa, axes=TRUE, col=mapa$Nome_Munic=="Santa Helena de Goiás")
>>> plot(mapa, col=mapa$Nome_Munic=="Chapadão do Céu", add=TRUE)
>>> plot(mapa, col=mapa$Nome_Munic=="Montividiu", add=TRUE)
>>> plot(mapa, col=mapa$Nome_Munic=="Acreúna", add=TRUE)
>>> plot(mapa, col=mapa$Nome_Munic=="Perolândia", add=TRUE)
>>> plot(mapa, col=mapa$Nome_Munic=="Palmeiras de Goiás", add=TRUE)
>>> plot(mapa, col=mapa$Nome_Munic=="Cristalina", add=TRUE)
>>>
>>> Apesar de conseguir colorir todos os 7 municipios, com os comando acima,
>>> todos os 7 ficam com a mesma cor.
>>>
>>> Certo de contar com a boa vontade de todos, agradeço antecipadamente.
>>>
>>> Att.,
>>>
>>> --
>>> Wirton Macedo Coutinho
>>> Pesquisador Fitopatologia
>>> Embrapa Algodão
>>> Rua Oswaldo Cruz, 1143, Centenário
>>> Campina Grande PB
>>> CEP 28428-095
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em listas.c3sl.ufpr.br
>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código
>>> mínimo reproduzível.
>>
>>
>>
>> --
>> Grato
>> Augusto C. A. Ribas
>>
>> Site Pessoal: http://augustoribas.heliohost.org
>> Lattes: http://lattes.cnpq.br/7355685961127056
>
>
>
>-- 
>Grato
>Augusto C. A. Ribas
>
>Site Pessoal: http://augustoribas.heliohost.org
>Lattes: http://lattes.cnpq.br/7355685961127056
>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120627/4bde93f3/attachment.html>


Mais detalhes sobre a lista de discussão R-br