如何使用choroplethr- choroplethrMaps-将country.map-country.region国家/地区添加到等值区域地图中

时间:2015-05-15 13:35:42

标签: r choropleth choroplethr

我已经使用choroplethr和choroplethrMaps包制作了一张地图。我的问题是,为了绘制国家/地区,此国家/地区必须包含在choroplethrMaps包中包含的country.regions和country.map数据框中。 所以我们说这是我的地图

install.packages("mapproj");library(mapproj)
install.packages("choroplethr")
install.packages("choroplethrMaps")
library(choroplethr);library(choroplethrMaps);library(ggplot2)
data(country.map)
data(country.regions)
a<-c(4.1,2.5,0.4,6.4,1.4,1.8,3.8,1.3,2.3,8.4,5.2,1.9,0.8,1.5,2.1,1.2,3.8,1.4,3.1,0.8,4.0,1.3,4.8,2.6,2.8,2.3,3.1,2.5,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA)
target<-c("austria","belgium","bulgaria","switzerland","cyprus","czech republic","denmark",
          "estonia","spain","finland","france","greece","croatia","hungary","ireland","italy",
          "lithuania","luxembourg","latvia","norway","poland","portugal","romania","sweden",
          "slovenia","slovakia","turkey","united kingdom","russia","belarus","germany","ukraine","iceland"
          ,"netherlands","bosnia and herzegovina","albania","montenegro","macedonia","moldova","kosovo")
datas<-data.frame(region=target,value=a)
datas$region<-as.character(datas$region)
gg <- country_choropleth(datas,num_colors=1,zoom=target)
gg <- gg + xlim(-25.266001, 71.869301)
gg <- gg + ylim(34.536311, 70.008797)
gg <- gg + coord_map("lambert", lat0=27.636311, lat1=81.008797)
gg<-gg+scale_fill_continuous(name="%",low="yellow", high="orange", na.value="grey")
gg<-gg+theme(plot.background=element_rect(fill="dodgerblue",colour="black"),legend.position="bottom",legend.background = element_rect(),legend.text = element_text(size = 13, colour = "black")) 
gg

enter image description here

一切都很顺利,因为我的数据框中的每个区域都包含在country.regions和country.map中的相同名称。

我的问题是我想将马耳他和塞尔维亚地区添加到我的地图中,我有数据,我无法这样做,因为它们不包含在country.regions和country.map数据框中的开发人员我试图在country.map(使用地图包的地理编码(“malta”)函数)中添加国家/地区的名称以及country.regions及其纬度和经度,但它不会那样工作

2 个答案:

答案 0 :(得分:1)

感谢您使用choroplethr。

我认为您会发现很难简单地将国家/地区添加到?country.map。您引用的地理编码功能只返回单个经度和纬度点。但是为了绘制这个国家,你需要点来代表整个边界。

然而,我写了一个choroplethr来处理这样的案例,人们希望将choroplethr界面用于他们自己的地图。以下是我建议您开始的方式。

  1. 阅读维基页面Mapmaking for R programmers
  2. 阅读小插图Creating Your Own Maps
  3. 如果您还有其他问题,可以在choroplethr google group
  4. 上发帖

    基本上,我认为您希望找到一个满足您需求的shapefile,并且足够好地学习QGIS以打开shapefile并在其中徘徊。在那之后,它应该只是几行R代码和(希望)一些简单的调试,以便让你的“正常工作”。

    对不起,我无法提供更具体的建议。我只是不知道去哪里寻找欧洲的shapefile。但是如果你发现它,或者其他人发布了它,我会把它添加到我的列表中。

答案 1 :(得分:1)

对于记录,choroplethrMaps确实包括塞尔维亚,但由于某种原因,你需要将其称为“塞尔维亚共和国”,而不仅仅是“塞尔维亚”。