R:带有spplot的地图中的自定义调色板

时间:2014-09-18 16:36:07

标签: r map plot spatial

我正在努力使用spplot包中的sp在几个多边形上引入自定义调色板。 我正在绘制几个字段并希望显示我的评级,其值可以是0,1,2,4或5.我需要使用自定义颜色。我试过的是:

spplot(Map,zcol="Rating", 
       col.regions=c("0"="#00cc00","1"="#ffff66","2"="#e5c100",
                     "3"="orange","4"="#ff5e5e","5"="red"), 
       colorkey=TRUE)

但是,它会产生重复的颜色,如下图所示。我怎么解决这个问题?我知道如何用ggplot来实现它,但由于几个原因我需要知道如何使用spplot。 非常感谢你的帮助。

编辑:这是一个示例,其中的地图可以按我需要的方式运行:

con <- url("http://gadm.org/data/rda/DEU_adm3.RData")
print(load(con))
close(con)
t1<-gadm[grep("Sachsen|Hessen|Bayern",gadm$NAME_1),]
col=c("red","yellow")
spplot(t1,zcol="TYPE_3",col.regions=col)

我注意到以下内容:当我使用我的数据对原始“Large SpatialPolygonsDataframe”进行子集化时,生成的地图是“Formal Class SpatialPolygonsDataframe”。在上面刚刚发布的示例中没有发生这种情况。谁能告诉我是什么原因导致这种行为?不幸的是,我无法上传原始(敏感)数据。

Map produced by spplot with repetitive color code (not desired)

1 个答案:

答案 0 :(得分:1)

zcolnumeric时会发生这种情况。将其转换为factor,您的绘图应按预期显示。

如果将t1$TYPE_3转换为数字:

,则可以看到此行为
t1$TYPE_3.num <- as.numeric(t1$TYPE_3)
spplot(t1, 'TYPE_3.num', col.regions=c('red', 'yellow'))

t1

假设有6个可能的因子级别,标签为0到5,请尝试:

Map$Rating.fac <- factor(M$Rating, levels=0:5)

然后使用zcol='Rating.fac'并将6种颜色的矢量传递给col.regions