Легендарный ярлык, показывающий один и тот же интервал более одного раза - PullRequest
0 голосов
/ 15 ноября 2011

Я делаю затененную карту в 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 Ответ

1 голос
/ 15 ноября 2011

Это показывает что-то подобное для меня, но ваше предположение неверно:

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

Я думаю, вы должны сделать это вручную. Это не большая проблема.

...