首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用国家名称的空间可视化-R

使用国家名称的空间可视化-R
EN

Stack Overflow用户
提问于 2020-07-13 08:51:02
回答 1查看 229关注 0票数 0

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

在我的数据框中,我有一个包含国家名称的列,但是我没有纬度/经度信息。如何仅使用国家/地区名称绘制此图?

EN

回答 1

Stack Overflow用户

发布于 2020-07-13 10:44:13

有很多选择。一个是rworldmap包。

代码语言:javascript
复制
library(rworldmap)

我们需要一些数据来映射。

代码语言:javascript
复制
COVID <- read.csv("https://opendata.ecdc.europa.eu/covid19/casedistribution/csv", na.strings = "", fileEncoding = "UTF-8-BOM")

汇总以获得总案例数。

代码语言:javascript
复制
library(dplyr)

CASES <- COVID %>% group_by(countriesAndTerritories) %>%
  summarise(`Total cases` = sum(cases)) %>%
  mutate(countriesAndTerritories=gsub("_", " ", countriesAndTerritories))        

如果你已经有了数据,那么你可以从这里开始。只需要两步。

步骤1.使用joinCode的" name“将地图与您自己的数据连接起来,并在您的数据中使用代表nameJoinColumn国家名称的变量的名称。

代码语言:javascript
复制
COVID.map <- joinCountryData2Map(CASES, joinCode = "NAME", nameJoinColumn = "countriesAndTerritories")

步骤2.绘制此对象。

代码语言:javascript
复制
par(mar=c(0,0,1,0))
mapCountryData(COVID.map, nameColumnToPlot="Total cases")

这不是一个特别有用的地图,因为数据是高度倾斜的。但是你可以看到这是多么的容易。最困难的部分是确保你的国家名称与包裹中的国家名称相匹配。您可以从以下位置查看这些内容:

代码语言:javascript
复制
countryRegions$ADMIN
[1] "Afghanistan"                  "Akrotiri Sovereign Base Area" "Aland"                       
[4] "Albania"                      "Algeria"                      "American Samoa"

还有一个国家同义词数据库:

代码语言:javascript
复制
countrySynonyms 

一个ggplot版本:

代码语言:javascript
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62867888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档