Eu tenho uma pergunta em relação à plotagem de um mapa de coropletas. O que é recomendado em relação à plotagem de um mapa com quebras personalizadas? E faça com que pareça um pouco atraente.
No meu script , usei o comando plot e spplot para visualizar alguns dados, mas não estou totalmente satisfeito com o resultado. É fácil ver porque. Usando spplot , recebo uma rampa de cores que repete cores para valores diferentes, o que é um pouco estranho. Usando a plotagem com as quebras personalizadas , não pude fazer melhores intervalos para os valores, de modo que, por exemplo, os valores zero sejam brancos no mapa. As proporções distorcidas entre legenda e mapa são provavelmente o resultado do Rstudio.
Então, eu me perguntei se alguém teria melhores sugestões para plotar mapas de coropletas no R usando pausas personalizadas?
EDIT 20-02-2013
Como sugerido, usei o ggplot2 para criar um mapa de choropleth. Eu usei o código abaixo. Eu encontrei dois problemas. Uma é que, após a fortificação dos dados, nem todos os dados do shapefile são transferidos para o quadro de dados. Então eu tenho que renomear a variável "id" para que eu possa mesclar os dados. Problema menor.
Um problema maior é que, apesar dos dados no quadro de dados estarem corretos, o ggplot mostra um mapa em que os dados estão incorretos. O valor da cor de acordo com a legenda não corresponde ao valor da variável nos dados. Estou negligenciando algo aqui?
# Plotting polygon shapefiles (try-out)
# Load the packages
require(rgdal)
require(maptools)
require(ggplot2)
gpclibPermit() # required for the fortify method
# Load the shapefile
africa=readOGR("/home/GIS",layer="africaII")
names(africa)
# Load the data on conflict
conflict<-read.csv("africa_conflict.csv", header=TRUE)
names(conflict)
# Merge the data together
africadat<-merge(africa, conflict, by="ISO3")
# Changing the data in the shapefile
africa@data <- africadat
# Fortify so that ggplot can plot
africa.points = fortify(africa,region="ISO3")
# Change "id" to "ISO3"such that the datasets can be merged again
names(africa.points)[names(africa.points)=="id"]<-"ISO3"
africa.df=merge(africa.points,africadat,by="ISO3")
# Plot the data
ggplot(africa.df) +
aes(long,lat,group=group) +
geom_polygon(aes(fill =onset))+
geom_path(color="white") +
coord_equal()
Atualização 13-11-2015: link corrigido para o arquivo de forma . Consulte a resposta abaixo para obter uma solução sobre como plotar o coropleta.
fonte
ggplot2
de mapas choropleth, que, por padrão, resultam em uma melhor aparência.Respostas:
Não vejo problema com o código acima, exceto que você possui 6 níveis claros
onset
, portanto, eu os trataria como fatores, e não como uma variável contínua. Observe afactor
chamada no código abaixo.Esse código fornece o seguinte resultado:
Se você quiser cores personalizadas, tente o seguinte:
O que produz isso:
fonte
3
para aonset
coluna e plota a3
no gráfico. Isso parece funcionar. Presumivelmente, estou perdendo alguma coisa?O pacote classInt possui várias funções para calcular intervalos para dados numéricos - instale-o e leia os documentos.
fonte
Para os arquivos, a solução que usei:
fonte