在不使用渐变的情况下在R中制作一个等值线

时间:2013-06-03 19:58:36

标签: r map

我是R的新手,我正在尝试使用adm1(或州)分区绘制阿根廷蚂蚁物种的分布图。

我已经从GADM网站下载了数据,我有一个我创建的csv文件,其中包含有关每个adm1中是否存在物种的信息。 即使我没有渐变,我还能做出一个等级吗?如果没有,我可以使用哪些其他类型的地图?

我查看了几个网站,包括Infomaps using RHow to make choropleths in R和等值线图挑战,这些网站真的很有帮助,但它们都有数字数据而我正在使用礼物(1)或缺席(0)列。我尝试过的不同套餐是spRColorBrewer},ggplot2rgeosmaptools

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

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")

非常感谢任何帮助,谢谢!

1 个答案:

答案 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")

enter image description here