我是R的新手,我正在尝试使用adm1(或州)分区绘制阿根廷蚂蚁物种的分布图。
我已经从GADM网站下载了数据,我有一个我创建的csv文件,其中包含有关每个adm1中是否存在物种的信息。 即使我没有渐变,我还能做出一个等级吗?如果没有,我可以使用哪些其他类型的地图?
我查看了几个网站,包括Infomaps using R,How to make choropleths in R和等值线图挑战,这些网站真的很有帮助,但它们都有数字数据而我正在使用礼物(1)或缺席(0)列。我尝试过的不同套餐是sp
(RColorBrewer
},ggplot2
,rgeos
和maptools
。
这是我到目前为止的代码:
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")
非常感谢任何帮助,谢谢!
答案 0 :(得分:4)
您提供的示例中出现了一些小问题。
首先,可以使用gadm@data$col_no
而不是gadm$col_no
访问空间多边形数据帧的数据槽。完成填写您的状态/缺席表后,可以直接访问插槽,也可以使用spCbind
包中的maptools
允许您将状态/缺席数据添加到空间多边形数据框中
其次,如果您的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")