我有一个包含多个列的数据帧,我想在其中可视化一些信息。我想用世界地图来显示信息。如下所示:

在我的数据框中,我有一个包含国家名称的列,但是我没有纬度/经度信息。如何仅使用国家/地区名称绘制此图?
发布于 2020-07-13 10:44:13
有很多选择。一个是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的" name“将地图与您自己的数据连接起来,并在您的数据中使用代表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()

https://stackoverflow.com/questions/62867888
复制相似问题