2012-06-27 2 views
15

Je voudrais utiliser R pour générer une carte du monde très basique avec un ensemble spécifique de pays remplis d'une couleur rouge pour indiquer qu'ils sont des pays d'endémie palustre.Comment créer une carte du monde en R avec des pays spécifiques renseignés?

J'ai une liste de ces pays dans un cadre de données, mais j'ai du mal à les superposer sur une carte du monde.

J'ai essayé d'utiliser l'objet wrld_simpl et également la méthode joinCountryData2Map dans le package rworldmap.

Je voudrais commenter cette réponse pour éviter l'ajout d'une question peut-être redondante mais je n'ai pas assez de réputation en ce moment, des excuses pour cela.

https://stackoverflow.com/a/9102797/1470099

J'ai du mal à comprendre les arguments donnés à la commande plot() - Je me demandais s'il y avait juste un moyen facile de dire R pour tracer tous les pays NAMEs dans ma liste sur la carte wrld_simpl au lieu de en utilisant grepl() etc., etc.

plot(wrld_simpl, 
    col = c(gray(.80), "red")[grepl("^U", [email protected]$NAME) + 1]) 
+0

@ttmaccer, pourquoi ne pas ajouter que comme une réponse? – A5C1D2H2I1M1N2O1R2T1

Répondre

17

Utilisation du package rworldmap, vous pouvez utiliser les éléments suivants:

library(rworldmap) 

theCountries <- c("DEU", "COD", "BFA") 
# These are the ISO3 names of the countries you'd like to plot in red 

malDF <- data.frame(country = c("DEU", "COD", "BFA"), 
    malaria = c(1, 1, 1)) 
# malDF is a data.frame with the ISO3 country names plus a variable to 
# merge to the map data 

malMap <- joinCountryData2Map(malDF, joinCode = "ISO3", 
    nameJoinColumn = "country") 
# This will join your malDF data.frame to the country map data 

mapCountryData(malMap, nameColumnToPlot="malaria", catMethod = "categorical", 
    missingCountryCol = gray(.8)) 
# And this will plot it, with the trick that the color palette's first 
# color is red 
+0

merci beaucoup, cela m'a vraiment aidé ... encore quelques-uns des petits pays africains qui n'apparaissent pas sur la carte, mais ce sera une autre tâche! – phlancelot

12

Essayez d'utiliser package googleVis et utiliser gvisGeoMap Fonctions

par exemple

G1 <- gvisGeoMap(Exports,locationvar='Country',numvar='Profit',options=list(dataMode='regions')) 

plot(G1) 
+1

Wow, je n'ai jamais réalisé à quel point googleVis est puissant! Syntaxe très simple, pas besoin de s'inquiéter de spacePointsDataFrame, et la sortie est belle! –

3
library(maptools) 
    data(wrld_simpl) 
    myCountries = [email protected]$NAME %in% c("Australia", "United Kingdom", "Germany", "United States", "Sweden", "Netherlands", "New Zealand") 
    plot(wrld_simpl, col = c(gray(.80), "red")[myCountries+1]) 

enter image description here

Questions connexes