2013-11-14 5 views
1

다음은 geomorphplotTangentSpace에 대한 도움말 페이지에있는 고전적인 예입니다. 두 줄을 추가하기 만하면 : Myname에 따라 Y.gpa$coords 배열의 한 차원 이름을 벡터 Myname 및 그 줄을 추가합니다. 당신이 볼 수 있듯이 나는 Y.gpa$coords 이름을 변경하여 수행하는 것을 목표로"geomorph"패키지의 plotTangentSpace에서 만든 플롯의 점 레이블 변경

library (geomorph) 
data(plethodon) 
Y.gpa<-gpagen(plethodon$land) #GPA-alignment 
ref<-mshape(Y.gpa$coords) 
Myname = 41:80 
dimnames(Y.gpa$coords)=list(NULL, NULL, Myname) 
plotTangentSpace(Y.gpa$coords, label=T) 

plotTangentSpace에 의해 생성 된 플롯의 포인트는 1시 40분보다는 41:80로 표시되어 있습니다. 포인트를 Myname에 따라 라벨을 지정하고 싶습니다. 이 예제에서 내 이름은 숫자의 벡터 일 뿐이지 만 문자 유형에서도 작동하고 싶습니다. 이것을 어떻게 할 수 있습니까? 당신은 당신이 '에'라벨을 설정할 수 있습니다시피

function (A, axis1 = 1, axis2 = 2, warpgrids = TRUE, label = FALSE) 

: 당신은 (단지 R 콘솔에 입력) plotTangentSpace에 대한 코드를 살펴있는 경우

답변

0

먼저 '인수 목록'을 찾아 또는 'off'(label = TRUE 또는 FALSE)이지만 레이블의 실제 값을 설정하는 인수는 없습니다. 또한 아래 두 곳의 기본에 대한 코드, 하드 코딩 된 라벨 (seq(1, n)를) 찾을 : pcdata, axis1n는 함수의 시작에 정의되어

if (label == T) { 
     text(pcdata[, axis1], pcdata[, axis2], seq(1, n), 
      adj = c(-0.7, -0.7)) 

을 ....

따라서 레이블의 값을 설정하려면 함수를 약간 재 작성해야하는 것 같습니다. 당신은 또한 geomorph 네임 스페이스의 tps 기능에 접근 할 필요가

text(pcdata[, axis1], pcdata[, axis2], labels, 
     adj = c(-0.7, -0.7)) 

을 : 모두 text 호출에서 인수를
function (A, axis1 = 1, axis2 = 2, warpgrids = TRUE, label = FALSE, labels = NULL)

... 변경 : 하나의 가능성은 arglistlabels 인수를 추가하는 것입니다 . 'MyName로'를 사용, 업데이트 된 기능

plotTangentSpace2 <- function (A, axis1 = 1, axis2 = 2, warpgrids = TRUE, label = FALSE, labels = NULL){
lots-of-stuff
text(pcdata[, axis1], pcdata[, axis2], labels, adj = c(-0.7, -0.7)) # in both places
more-stuff
geomorph:::tps(ref, shape.min, 20)
geomorph:::tps(ref, shape.max, 20)
}

플롯 : 그런 다음 새로운 함수 이름에 업데이트 된 기능을 할당

geomorph:::tps(ref, shape.min, 20) 
    geomorph:::tps(ref, shape.max, 20) 

: 이것은 tps의 두 인스턴스 전에 geomorph:::을 추가하여 achived 할 수있다 라벨로 :
plotTangentSpace2(Y.gpa$coords, label = TRUE, labels = Myname) enter image description here