【问题标题】:Spatial Visualization using country names - R使用国家名称的空间可视化 - R
【发布时间】:2020-07-13 11:02:15
【问题描述】:

我有一个包含几列的数据框,我想在其中可视化一些信息。 我想使用世界地图显示信息。像这样:

在我的数据框中,我有一列包含国家名称,但我没有纬度/经度信息。 我怎样才能只使用国家名称来制作这个情节?

【问题讨论】:

标签: r ggmap


【解决方案1】:

许多选项。一个是 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多