在使用spplot绘制地图时如何自定义颜色调色板?

3

我在使用sp包中的spplot时遇到了一些困难,希望能够介绍如何在多个多边形上应用自定义调色板。我正在绘制多个字段,想要显示我的评级,可以是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)

我注意到以下情况:当我用我的数据对原始的“大型空间多边形数据帧”进行子集化时,得到的地图是一个“正式类空间多边形数据帧”。这在我刚才发布的示例中没有发生。有人能告诉我是什么原因导致了这种行为吗?不幸的是,我无法上传原始(敏感)数据。 使用重复颜色代码生成的spplot地图(不需要)

如果您将代码更改为col.regions=c("#00cc00", "#ffff66", "#e5c100", "orange", "#ff5e5e", "red"),它是否按照您的预期工作? - eipi10
如果您发布一个可重现的例子,那么别人就可以重现您的问题并尝试解决它,这样我们就更容易帮助您了。 - eipi10
1个回答

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接