2011-02-27 6 views
3

spplot()의 영역에 이름 레이블을 추가하고 싶습니다.spplot()의 국가 레이블

예 :

load(url('http://gadm.org/data/rda/FRA_adm0.RData')) 
FR <- gadm 
FR <- spChFIDs(FR, paste("FR", rownames(FR), sep = "_")) 
load(url('http://gadm.org/data/rda/CHE_adm0.RData')) 
SW <- gadm 
SW <- spChFIDs(SW, paste("SW", rownames(SW), sep = "_")) 
load(url('http://gadm.org/data/rda/DEU_adm0.RData')) 
GE <- gadm 
GE <- spChFIDs(GE, paste("GE", rownames(GE), sep = "_")) 

df <- rbind(FR, SW, GE) 

## working 
plot(df) 
text(getSpPPolygonsLabptSlots(df), labels = c("FR", "SW", "GE")) 


## not working 
spplot(df[1-2,]) 
text((getSpPPolygonsLabptSlots(df), labels = c("FR", "SW")) 

두 번째는 아마도 때문에 격자 작동하지 않습니다!? 그러나 spplot 기능이 필요합니다. 플롯에 레이블을 어떻게 얻을 수 있습니까?

+1

합니다. 'text()'는 전자를 사용하고, 격자는 후자를 사용합니다. 격자, 또는'panel.text()'와 동등한'ltext()'를 사용할 수 있지만, 패널 함수를 써야 사용할 것으로 생각됩니다. 나는 당신이 기본 그래픽으로 할 수있는 것처럼 격자 플롯 위에 쉽게 그릴 수 있다고 생각하지 않습니다. –

답변

5

감사합니다. Gavin Simpson!

나는 마침내 길을 발견했다. 그것은 미래에 다른 사람을 돕는 희망에

, 내 솔루션을 게시 : 함수 격자의 ltext 사용하는 텍스트를 추가

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

ISO.sp.label <- function(x) { 
    sp.label(x, row.names(x["ISO"])) 
} 

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

spplot(df['ISO'], sp.layout = make.ISO.sp.label(df)) 
5

표준 방법을하지만, 주어진 좌표는 항상 절대있다. 본질적으로 텍스트를 추가 한 후에는 실제 크기를 재조정 할 수 없습니다. 예 :

myPanel <- function(x,y,xx,yy,labels,...){ 
    panel.xyplot(x,y,...) 
    ltext(xx,yy,labels) 
} 

xyplot(1:10 ~ 1:10,data=quakes,panel=myPanel, 
     xx=(1:5),yy=(1:5)+0.5,labels=letters[1:5]) 

:

data(meuse.grid) 
gridded(meuse.grid)=~x+y 
meuse.grid$g = factor(sample(letters[1:5], 3103, replace=TRUE),levels=letters[1:10]) 
meuse.grid$f = factor(sample(letters[6:10], 3103, replace=TRUE),levels=letters[1:10]) 

spplot(meuse.grid, c("f","g")) 
ltext(100,200,"Horror") 

당신은 각 패널 내에서 좌표를 사용하여 사용자 정의 패널 기능을 사용할 수 있습니다

Horror 1Horror 2

(전 확장 후)이 수치를 생성합니다 (어떻게 보이는지 직접보기)

이 트릭은 spplot 기능에서도 사용할 수 있습니다. 실제로 사용하는 플로팅 기능을 확인해야합니다. spplot의 도움말 파일에서 가능한 옵션 (polygonsplot, gridplot 및 pointsplot)을 찾을 수 있으므로 원하는 작업을 수행하고 있는지 여부를 확인해야합니다. 위의 gridplot를 계속,이된다 : 텍스트가 각 패널에 추가됩니다 rescalable 결과를 제공

myPanel <- function(x,y,z,subscripts,xx,yy,labels,...){ 
    panel.gridplot(x,y,z,subscripts,...) 
    ltext(xx,yy,labels) 
} 
# I just chose some coordinates 
spplot(meuse.grid, c("f","g"),panel=myPanel,xx=180000,yy=331000,label="Hooray") 

: 당신이 기본 그리드 그래픽을 혼합 할 수 없습니다

enter image description hereHooray