将地区的名称放在地块上

时间:2015-02-06 15:19:22

标签: r dictionary plot

我正在努力制作乌克兰地区强度图的图,强度取决于'值。这是我的代码:

library(sp)
con <- url("http://biogeo.ucdavis.edu/data/gadm2/R/UKR_adm1.RData")
print(load(con))
close(con)
name<-VARNAME_1
gadm$VARNAME_1
value<-c(1:27)
gadm$VARNAME_1<-as.factor(value)
col<- colorRampPalette(c('white', 'black'))(256) 
spplot(gadm, "VARNAME_1", main="Ukraine", scales = list(draw = TRUE), col.regions=col)

我的问题是:是否可以在地图上添加区域名称(我将其作为字符向量name放在我的代码中,放在地图上的适当位置。或者可能是另一个建议地图更清晰易懂哪个地区有相应的价值。 谢谢!

2 个答案:

答案 0 :(得分:3)

此解决方案使用plot代替spplot,因此我们可以使用text添加标签。如果您仍想使用spplot,请检查

x11()
col = cm.colors(length(gadm$PID))
plot(gadm, , col=col[rev(gadm$VARNAME_1)])
text(coordinates(gadm), labels = gadm$NAME_1, cex=0.4)

或者如果您仍想使用spplot,请准备好多做一些。这是this回答

的修改
sp.label <- function(x, label) {
    list("sp.text", coordinates(x), label)
}

NAME.sp.label <- function(x) {
    sp.label(x, x$NAME_1)
}

draw.sp.label <- function(x) {
    do.call("list", NAME.sp.label(x))
}

spplot(gadm, 'VARNAME_1', sp.layout = draw.sp.label(gadm))

答案 1 :(得分:2)

一种可能性是用颜色来做:

colors=rainbow(length(gadm$NAME_1))
plot(gadm,col=colors)
legend("topleft",legend=gadm$NAME_1,fill=colors,cex=1.3,bty="n" )

enter image description here

或使用text添加姓名:

colors=rainbow(length(gadm$NAME_1))
plot(gadm,col=colors)
text(coordinates(gadm), labels = gadm$NAME_1)

enter image description here