Daten pro Land einer Weltkarte zuordnen

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
walter_milos
Beiträge: 3
Registriert: Di Apr 27, 2021 12:05 pm

Daten pro Land einer Weltkarte zuordnen

Beitrag von walter_milos »

Hallo zusammen,

vor kurzem war mein Problem das ich keine Weltkarte mit ggplot2 erstellen konnte, das hat nun endlich funktioniert. Dazu habe ich diesen Code benutzt:

#daten weltkarte, antarctica aussortieren
world_map <- map_data("world")
world_map <- world_map[world_map$`region`!= "Antarctica", ]

p0 <- ggplot(data = world_map,
mapping = aes(x =long, y=lat, group=group, fill=region)) + xlab(NULL) + ylab(NULL)

p0 + geom_polygon(fill="lightgrey", color="black") +
coord_map(projection = "albers", lat0 = 0, lat1=180) +
guides(fill =FALSE)

Nun ist world_map eine Tabelle mit verschiedenen Koordinaten der einzelnen Länder, die dann die Weltkarte erzeugen. Diese ist so aufgebaut (das ist natürlich nur ein kleiner ausschnitt):

long lat group order region subregion
1 -69.89912 12.45200 1 1 Aruba <NA>
2 -69.89571 12.42300 1 2 Aruba <NA>
3 -69.94219 12.43853 1 3 Aruba <NA>
4 -70.00415 12.50049 1 4 Aruba <NA>
5 -70.06612 12.54697 1 5 Aruba <NA>
6 -70.05088 12.59707 1 6 Aruba <NA>
7 -70.03511 12.61411 1 7 Aruba <NA>
8 -69.97314 12.56763 1 8 Aruba <NA>
9 -69.91181 12.48047 1 9 Aruba <NA>
10 -69.89912 12.45200 1 10 Aruba <NA>
12 74.89131 37.23164 2 12 Afghanistan <NA>

Wie man sieht gibt es mehrere einträge und Koordinaten pro Land.
Ich habe als Gegenstück eine Tabelle die first_day heißt. In dieser Tabelle kommt jedes Land nur einmal vor und jedem Land ist für das Datum 2020-01-23 eine Wert von Corona Neuinfektionen zugeordnet. Die Tabelle first_day ist wie folgt aufgebaut (auch hier handelt es sich nur um die ersten Zeilen):

Country date newcases Lat Long_ Population
1 Afghanistan 2020-01-23 0 33.939110 67.709953 38928341
2 Albania 2020-01-23 0 41.153300 20.168300 2877800
3 Algeria 2020-01-23 0 28.033900 1.659600 43851043
4 Andorra 2020-01-23 0 42.506300 1.521800 77265
5 Angola 2020-01-23 0 -11.202700 17.873900 32866268
6 Antigua and Barbuda 2020-01-23 0 17.060800 -61.796400 97928
7 Argentina 2020-01-23 0 -38.416100 -63.616700 45195777
8 Armenia 2020-01-23 0 40.069100 45.038200 2963234
9 Australia 2020-01-23 0 -25.000000 133.000000 25459700
10 Austria 2020-01-23 0 47.516200 14.550100 9006400
11 Azerbaijan 2020-01-23 0 40.143100 47.576900 10139175
12 Bahamas 2020-01-23 0 25.025885 -78.035889 393248
13 Bahrain 2020-01-23 0 26.027500 50.550000 1701583
14 Bangladesh 2020-01-23 0 23.685000 90.356300 164689383

Meine Ziel ist es nun mit Hilfe von ggplot2 eine Weltkarte zu erzeugen, auf der man die Neuinfektionen der jeweiligen Länder farblich darstellt. Als Beispiel sollte China mit 100 Neuinfektionen in z.B. Rot dargestellt werden, Deutschland mit 20 Fällen z.B. gelbund Länder mit keinem Fall z.B in weiß.
Mein Problem ist, das ich zum einen ein kompletter Neuling bin und zum anderen das ich nicht weiß wie man die Länderdaten aus first_day mit der oben erzeugten Landkarte verbindet. Es wäre super wenn mir jemand sagen könnte was ich tun müsste um das zu schaffen. Ich hoffe das war einigermaßen verständlich.

Vielen Dank und viele Grüße

WM
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Daten pro Land einer Weltkarte zuordnen

Beitrag von bigben »

Beschäftige mal eine Suchmaschine mit R und "choropleth". Da sollten einige Treffer in der passenden Richtung auftauchen ...

Schönen Sonntag, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Daten pro Land einer Weltkarte zuordnen

Beitrag von EDi »

Du kannst entweder einen räumlichen join (über die Koordinaten - z.b. sf::st_join) oder einen Tabellarischen Join (Über die Ländernamen, z.b dplyr::left_join) machen. Was dir halt passt. Ohne ein reproduzierbares Beispiel kann ich nicht mehr sagen...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten