r - 在 R 中不使用梯度制作 Choropleth

标签 r dictionary

我对 R 还很陌生,我正在尝试使用 adm1(或州)分区来绘制阿根廷 Ant 物种的分布图。

我已经从 GADM 网站下载了数据,并且创建了一个 csv 文件,其中包含说明每个 adm1 中是否存在该物种的信息。 即使我没有渐变,我仍然可以制作等值线吗?如果没有,我还可以使用哪些其他类型的 map ?

我浏览了几个网站,包括 Infomaps using R , How to make choropleths in R ,以及 Choropleth map 挑战,这确实很有帮助,但它们都有数字数据,而且我使用的是present(1)或absent(0)列。我尝试过的不同软件包有 sp(带有 RColorBrewer)、ggplot2rgeos map 工具

这是我到目前为止的代码:

library(sp)
library(RColorBrewer)
write.csv(atr, "atr_data.csv")
atr_data<-read.csv("atr_data.csv", header=TRUE)
  spcode country_code adm1_code newcol
1    atr          VEN     VE.AR      0
2    atr          PRY     PY.CE      0
3    atr          PAN     PA.CL      0
4    atr          PAN     PA.CL      0
5    atr          PAN     PA.PN      0
6    atr          PAN     PA.PN      0

我正在创建一个包含完整 adm1 名称而不是代码的列,以便它与 GADM 文件匹配(因此我还没有编写用于合并数据的代码)。

#to retrieve map for Argentina ARG
con <- url("http://gadm.org/data/rda/ARG_adm1.RData")
print(load(con))
close(con)
#to generate random colors on map
col = rainbow(length(levels(gadm$NAME_1)))
spplot(gadm, "NAME_1", col.regions=col, main="ARG Regions", colorkey = FALSE, lwd=.4,col="white")  
#this piece of code is a mess  
col_no <- as.factor(as.numeric(atr_data$newcol[order],
                c(0,1)))
levels(col_no)<- c("0", "1")
gadm$col_no <- col_no
myPalette<-brewer.pal(3, "Purples")
spplot(gadm, "col_no", col=grey(.9), 
col.regions=myPalette,
main="Distribution of Atratus in Argentina")

任何帮助将不胜感激,谢谢!

最佳答案

您提供的示例中出现了一些小问题。

首先,可以使用 gadm@data$col_no 而不是 gadm$col_no 访问空间多边形数据帧的数据槽。填写完存在/缺席表后,您可以通过直接访问插槽或使用 maptools 包中的 spCbind 添加存在/缺席数据到空间多边形数据框。

其次,如果您的 col_no 因子只有 2 个级别,则必须将 MyPalette 子集为 2 种颜色,因为 Brewer 调色板只能使用最少的颜色3 级。

library(sp)
library(RColorBrewer)
con <- url("http://gadm.org/data/rda/ARG_adm1.RData")
print(load(con))
close(con)

# Randomly assigning presence/absence data for display purposes only
gadm@data$col_no <- as.factor(rbinom(n = 24, size = 1, prob = 0.5))

myPalette <- brewer.pal(3, "Purples")

# col.regions is limited to 2 colors below with the middle color dropped.
spplot(gadm, zcol = "col_no", colorkey = TRUE, col.regions = myPalette[-2],
    main="Distribution of Atratus in Argentina")

enter image description here

关于r - 在 R 中不使用梯度制作 Choropleth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16904848/

相关文章:

r - model.frame 和更新

r - 如何使用 geojsonio 包保留 ID?

python - 在 cython : memoryview vs vector of dictionaries 中快速访问稀疏矩阵

dictionary - 每个值具有多个键的 Golang 映射

C++:如何为模板类创建小型速度测试?

r - 无法在函数内对 ggplot 使用分面

java - containarized shinyproxy 非常慢

r - 即使条件没有改变,也会在 Shiny 中触发 observeEvent

python - 从字典中的所有值中减去 1

python - 将字典列表转换为 Pandas 数据框