2015-02-06 25 views
4

我想要製作烏克蘭地區強度地圖的陰謀,強度取決於'價值'。這裏是我的代碼:把地區的名字放在地圖上

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

一種可能性是顏色做到這一點:!

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

+0

你可以改變顏色,如果你想 – Math 2015-02-06 15:58:40

+0

您還可以獲取有關繪圖功能更多的信息在這裏:http://stackoverflow.com/questions/20168230/how-to-add-顏色到地圖的區域 – Math 2015-02-06 16:09:25

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)) 
+0

解決方案與spplot - 是最好的,謝謝!強度等級和名稱,你是我的救星!) – 2015-02-06 16:36:22