【发布时间】:2020-07-13 11:02:15
【问题描述】:
【问题讨论】:
-
这个答案有帮助吗? stackoverflow.com/questions/54349988/…
【问题讨论】:
许多选项。一个是 rworldmap 包。
library(rworldmap)
我们需要一些数据来映射。
COVID <- read.csv("https://opendata.ecdc.europa.eu/covid19/casedistribution/csv", na.strings = "", fileEncoding = "UTF-8-BOM")
聚合以获得总病例数。
library(dplyr)
CASES <- COVID %>% group_by(countriesAndTerritories) %>%
summarise(`Total cases` = sum(cases)) %>%
mutate(countriesAndTerritories=gsub("_", " ", countriesAndTerritories))
如果您已经获得了数据,那么您可以从这里开始。只需两步。
第 1 步。
使用joinCode 的“名称”和代表nameJoinColumn 的国家/地区名称的数据中的变量名称将您自己的数据加入地图。
COVID.map <- joinCountryData2Map(CASES, joinCode = "NAME", nameJoinColumn = "countriesAndTerritories")
第 2 步。绘制此对象。
par(mar=c(0,0,1,0))
mapCountryData(COVID.map, nameColumnToPlot="Total cases")
这不是一张特别有用的地图,因为数据高度倾斜。但是你可以看到它是多么容易。最困难的部分是确保您的国家名称与包裹中的名称相匹配。您可以从以下位置看到这些:
countryRegions$ADMIN
[1] "Afghanistan" "Akrotiri Sovereign Base Area" "Aland"
[4] "Albania" "Algeria" "American Samoa"
还有一个国家同义词数据库:
countrySynonyms
ggplot 版本:
library(ggplot2)
library(scales)
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)
world <- ne_countries(scale = "medium", returnclass = "sf")
COVID.world <- merge(world, CASES, by.x="admin", by.y="countriesAndTerritories")
ggplot(data = COVID.world) +
geom_sf(aes(fill=Total)) +
scale_fill_gradient(label=comma) +
theme_void()
【讨论】: