我有一张俄罗斯地图细分地图
library(raster)
data <- getData('GADM', country='RUS', level=1)
http://www.gks.ru/bgd/regl/B16_14p/IssWWW.exe/Stg/d01/08-01.doc
该链接指向Word.doc,其中包含俄罗斯地区犯罪率的数据(表格)。我可以提取这些数据并在R中使用它。我想花2015年并根据犯罪率在地图上着色区域(也添加一个图例)。我怎样才能做到这一点?问题是,形状文件(NL_NAME_1
)和www.gks.ru数据中的区域名称有时会有所不同。
我还有我需要的图形代码,除了这里我们有无意义的颜色:
library(sp)
library(RColorBrewer)
data$region <- as.factor(iconv(as.character(data$NAME_1)))
spplot(data, "region", xlim=c(15,190), ylim=c(40,83),
col.regions=colorRampPalette(brewer.pal(12, "Set3"))(85), col = "white")
答案 0 :(得分:0)
如果我理解你的问题,你只需要将数据添加到空间对象中以使颜色有意义。
请注意,data
是R中的保留字。因此,最好修改一下您的变量名称:
geo_data <- getData('GADM', country = 'RUS', level = 1)
让我们模拟一些数据来演示可视化策略:
set.seed(23)
geo_data@data["data_to_plot"] <- sample(1:100, length(geo_data@data$NAME_1))
使用默认的GADM
预测会削减该国最东部的部分。一个简单的转换有助于使整个区域适合情节:
# fit Russian area inside the plot
geo_data_trsf <- spTransform(geo_data, CRS("+proj=longlat +lon_wrap=180"))
绘制地图选择data_to_plot
而不是region
:
max_data_val <- max(geo_data_trsf@data$data_to_plot)
spplot(geo_data_trsf, zcol = "data_to_plot",
col.regions = colorRampPalette(brewer.pal(12, "Set3"))(max_data_val),
col = "white")
为转换后的空间数据geo_data_trsf
自动调整绘图限制,从而可以省略xlim
和ylim
。
至于名称问题,我无法提供任何现成的解决方案。显然,该地区&#39; NL_NAME_1
的名称需要一些额外的处理才能将它们用作标签。我认为,最好在代码中使用NAME_1
作为标识符,以确保它不会出现编码问题。 NL_NAME_1
列非常适合设置Word-data
与空间对象geo_data
内的数据之间的对应关系。