首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据R中的变量着色俄罗斯地图

根据R中的变量着色俄罗斯地图
EN

Stack Overflow用户
提问于 2018-04-08 23:29:43
回答 1查看 719关注 0票数 1

我有一张俄罗斯地图,上面有区域分区

代码语言:javascript
复制
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的数据中是不同的。我也有我需要的图形代码,除了这里我们有无意义的颜色:

代码语言:javascript
复制
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") 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-10 11:23:40

如果我正确地理解了你的问题,你只需要把你的数据添加到空间对象中,使颜色变得有意义。

请注意,data是R.中的一个保留字,所以最好修改一下变量名:

代码语言:javascript
复制
geo_data <- getData('GADM', country = 'RUS', level = 1)

让我们模拟一些数据来演示可视化策略:

代码语言:javascript
复制
set.seed(23)
geo_data@data["data_to_plot"] <- sample(1:100, length(geo_data@data$NAME_1))

使用默认的GADM预测将削减该国最东部地区。一个简单的转换可以帮助整个区域适应一个地块:

代码语言:javascript
复制
# fit Russian area inside the plot
geo_data_trsf <- spTransform(geo_data, CRS("+proj=longlat +lon_wrap=180"))

绘制地图,选择data_to_plot而不是region

代码语言:javascript
复制
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,自动调整地块限制,从而可以省略xlimylim

至于名字的问题,我不能提供任何现成的解决方案。显然,这些区域的NL_NAME_1名称需要一些额外的处理来使用它们作为标签。我认为,最好在代码中使用NAME_1作为标识符,以确保编码不会有问题。NL_NAME_1列非常适合设置Word-data与空间对象geo_data中的数据之间的对应关系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49723816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档