在R

时间:2018-11-27 13:16:01

标签: r maps rworldmap

我正在处理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

1 个答案:

答案 0 :(得分:0)

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

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

df<-data.frame(country=c("Afghanistan","Australia","Iceland","USSR","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欢呼)