2012-06-27 27 views
15

Ich möchte mit R eine sehr einfache Weltkarte erstellen, in der eine bestimmte Gruppe von Ländern rot markiert ist, um anzuzeigen, dass es sich um endemische Malaria-Länder handelt.Wie erstellt man eine Weltkarte in R mit bestimmten Ländern ausgefüllt?

Ich habe eine Liste dieser Länder in einem Datenrahmen, aber ich habe Mühe, sie auf einer Weltkarte zu überlagern.

Ich habe versucht, das wrld_simpl Objekt und auch die joinCountryData2Map Methode im rworldmap Paket zu verwenden.

Ich würde diese Antwort kommentieren, um das Hinzufügen einer möglicherweise redundanten Frage zu verhindern, aber ich habe im Moment nicht genügend Reputation, Entschuldigung dafür.

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

Ich habe Schwierigkeiten, die Argumente zu dem plot() Befehl gegeben zu verstehen - ich fragte mich, ob es nur eine einfache Art und Weise war R zu sagen, alle Ländernamen in meiner Liste auf der wrld_simpl Karte plotten statt mit grepl() etc. etc.

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

@ttmaccer, wurde noch nicht als Antwort? – A5C1D2H2I1M1N2O1R2T1

Antwort

17

Mit dem rworldmap Paket, könnten Sie wie folgt vor:

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

Vielen Dank, das hat mir wirklich geholfen ... habe noch ein paar der kleinen afrikanischen Länder, die nicht auf der Karte erscheinen, aber das sollte eine weitere Tagesaufgabe sein! – phlancelot

12

Versuchen googleVis Paket mit und gvisGeoMap Funktionen

zB verwenden

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

plot(G1) 
+1

Wow, ich habe nie realisiert, wie mächtig googleVis ist! Sehr einfache Syntax, keine Notwendigkeit, sich um spatialPointsDataFrame zu sorgen, und die Ausgabe ist schön! –

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