我在R中制作阴影地图。图例为零和缺失创建了单独的类别,但它标记了两个“[0,0)”
知道如何解决这个问题吗?
library(gpclib)
library(maptools) # loads sp library too
library(RColorBrewer) # creates nice color schemes
library(classInt) # finds class intervals for continuous variables
CAcounty.shp <- readShapePoly(file.choose(),proj4string=CRS("+proj=longlat"))
plotvar <- CAcounty.shp@data$mediresp
nclr <- 8
plotclr <- brewer.pal(nclr,"BuPu")
class <- classIntervals(plotvar, nclr, style="quantile")
colcode <- findColours(class, plotclr)
plot(CAcounty.shp, xlim=c(-122.5, -117), ylim=c(32,42))
plot(CAcounty.shp, col=colcode, add=T)
XXXXX <- read.csv("XXXXXXXX.csv")
plotvar <- XXXXX$XXXXXX
title(main=“XXXXXXXXXXXXXXXX",
sub=“Internal Data")
legend(-119, 42, legend=names(attr(colcode, "table")),
fill=attr(colcode, "palette"), cex=0.6, bty="n")
plotclr <- brewer.pal(nclr,"RdYlGn")
colcode <- findColours(class, plotclr)
points(KPhosp$lon, KPhosp$lat, pch=16, col=colcode, cex=1)
答案 0 :(得分:1)
这对我来说就是这样,但你的假设是错误的:
plotvar=c(rep(NA,20),rep(0,20),1:10)
nclr <- 8
plotclr <- brewer.pal(nclr,"BuPu")
class <- classIntervals(plotvar, nclr, style="quantile")
colcode <- findColours(class, plotclr)
plot(1:10)
legend(5,5, legend=names(attr(colcode, "table")),
fill=attr(colcode, "palette"), cex=0.6, bty="n")
生成一个包含大量[0,0]值的图例,这些值都是零(不是缺少值 - 通过从向量中删除NA来检查,没有任何变化)。
因为我有8个分位数中断,但是有很多零,它们只能填充一个分位数。
如果这是你的问题,那么你需要考虑另一种将值映射到颜色的方法,它与缺失的值无关!
这里有一些类似的代码,展示了如何在图例中添加额外的项目,以指示NA颜色的项目会发生什么:
set.seed(310366)
x=1:30
y=30*runif(30)
plotvar=sample(5+10*c(rep(NA,20),runif(10)))
nclr <- 8
plotclr <- brewer.pal(nclr,"Spectral")
class <- classIntervals(plotvar, nclr, style="quantile")
colcode <- findColours(class, plotclr)
plot(x,y,col="black",pch=21,bg=colcode)
legend(5,10, legend=c("Missing",names(attr(colcode, "table"))),
fill=c("white",attr(colcode, "palette")), cex=0.6, bty="n")
我认为您必须手动执行此操作。这不是什么大问题。