在 R 中绘制 1990 年前的世界地图

Posted

技术标签:

【中文标题】在 R 中绘制 1990 年前的世界地图【英文标题】:Plot pre-1990 world map in R 【发布时间】:2018-11-27 13:16:00 【问题描述】:

我正在处理 1991 年之前的一些全球数据,因此在苏联、南斯拉夫和捷克斯洛伐克分裂之前。我想使用 rworldmap 或 maps 绘制数据,但该包似乎只有现代世界地图易于访问。 1991 年之前的所有国家/地区都显示为空白,并且边界划分了 1991 年之后的对应国家。

此代码生成历史地图:

if (requireNamespace("mapdata", quietly=TRUE) && packageVersion("mapdata") >= "2.3")
 map("mapdata::worldLores", fill = TRUE, col = 1:10)

编辑:另外,根据下面的有用评论,历史地图 shapefile 可以从以下位置轻松获得:

library(cshapes)
cshp.data<-cshp(as.Date("1990-01-01"))
plot(cshp.data)

但我不知道是否可以将它与 rworldmap 函数结合使用......或者我是否必须弄清楚如何使用 maps 包,这似乎工作方式不同。 (或者也许有一个 ggplot 解决方案?)

我目前使用的 rworldmap 代码(获取现代地图)是:

#make example data including Soviet Union
country <- as.vector(c("Afghanistan","Australia","Iceland","Soviet Union", 
"Zimbabwe"))
value <- as.vector(c(5,10,100,10,50))
df<-data.frame(country,value)

#make map
map1 <- joinCountryData2Map(df, joinCode = "NAME", nameJoinColumn = 
"country")
mapCountryData( map1, addLegend=F, catMethod="fixedWidth", 
nameColumnToPlot="value" )
#...Soviet Union is blank

【问题讨论】:

gislounge.com/find-gis-data-historical-country-boundaries 可能会有所帮助(它有关于在哪里可以找到历史 shapefile 的信息) 谢谢 - 从那里我可以使用包 cshapes 轻松下载我想要的日期的 shapefile,但有同样的问题,因为无法将其集成到 rworldmap... 【参考方案1】:

啊哈,有一个 ggplot 解决方案使用 mapdata 包中的旧地图:

library(ggplot2)
library(dplyr)
library(mapdata)

df<-data.frame(country=c("Afghanistan","Australia","Iceland","Us-s-r","Zimbabwe"),
           value=c(5,10,100,10,50),stringsAsFactors=FALSE)

WorldData <- map_data('worldLores') #use the old map
WorldData <- fortify(WorldData)

mapped <- ggplot() +
  geom_map(data=WorldData, map=WorldData,
              aes(x=long, y=lat, group=group, map_id=region),
              fill="white", colour="#7f7f7f", size=0.5) +
  geom_map(data=df, map=WorldData,
              aes(fill=value, map_id=country),
              colour="#7f7f7f", size=0.5)
mapped

(映射代码借自this帖子,干杯@hrbrmstr)

【讨论】:

以上是关于在 R 中绘制 1990 年前的世界地图的主要内容,如果未能解决你的问题,请参考以下文章

r 在PCAmixdata PC地图中绘制单个观察结果

R中绘制城市地图并在其上放置点的最佳软件包是啥?

使用 r 包在地图上绘制 netcdf 变量轮廓的简单方法

R语言绘图:在地图上绘制热力图

如何在谷歌地图中绘制历史国家数据(苏联、东德等)?

在R ggplot2中将条形图绘制到地图上