我正在努力使用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”。在上面刚刚发布的示例中没有发生这种情况。谁能告诉我是什么原因导致这种行为?不幸的是,我无法上传原始(敏感)数据。
答案 0 :(得分:1)
当zcol
为numeric
时会发生这种情况。将其转换为factor
,您的绘图应按预期显示。
如果将t1$TYPE_3
转换为数字:
t1$TYPE_3.num <- as.numeric(t1$TYPE_3)
spplot(t1, 'TYPE_3.num', col.regions=c('red', 'yellow'))
假设有6个可能的因子级别,标签为0到5,请尝试:
Map$Rating.fac <- factor(M$Rating, levels=0:5)
然后使用zcol='Rating.fac'
并将6种颜色的矢量传递给col.regions
。