图例标签不止一次显示相同的间隔

时间:2011-11-15 17:49:46

标签: r maps legend

我在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)

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

我认为您必须手动执行此操作。这不是什么大问题。