我有一张俄罗斯地图,上面有区域分区
library(raster)
data <- getData('GADM', country='RUS', level=1)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") 发布于 2018-04-10 11:23:40
如果我正确地理解了你的问题,你只需要把你的数据添加到空间对象中,使颜色变得有意义。
请注意,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。
至于名字的问题,我不能提供任何现成的解决方案。显然,这些区域的NL_NAME_1名称需要一些额外的处理来使用它们作为标签。我认为,最好在代码中使用NAME_1作为标识符,以确保编码不会有问题。NL_NAME_1列非常适合设置Word-data与空间对象geo_data中的数据之间的对应关系。
https://stackoverflow.com/questions/49723816
复制相似问题