2016-06-08 3 views
2

vegan의 기능인 nestednodf의 출력을 쉽게 그릴 수 있습니다. 선택한 색상을 다른 색상으로 강조하고 싶지만 한 줄로 색상을 지정하는 방법을 모르겠습니다. 행 1,3과 5를 파란색으로, 행 2와 4를 빨간색으로 (기본 색) 원한다고 가정 해보십시오. 이 코드는 파란색의 행 1,3,5와 두 번째 플롯을 중첩 할 수 있지만 처음에 선택한 행 삽입하지 않습니다r 플롯의 색상 제어

library(vegan) 
df=data.frame(a=c(0,1,1,1,0), b=c(1,0,0,0,1), c=c(1,1,1,1,0), d=c(1,0,1,0,1), e=c(0,0,0,1,1)) 
plot(nestednodf(df)) 
plot(nestednodf(df[c(1,3,5),]), col='blue', add=T) 

행 색상을 제어 할 수있는 방법이 있나요를? 이런 식으로 뭔가 :

plot(nestednodf(df), row.col=c('blue', '', 'blue', '', 'blue')) 
+0

는 "명확히 할 수 행렬에서"0 "값에 사용되지만에서 선택한 행을 삽입하지 않기 때문에 나는 세 가지 색상을 통과

plot(nestednodf(df)) myplot(nestednodf(df), col=c(NA,'red','blue')) 

enter image description here

참고 비교 첫 번째"? –

+0

두 번째 플롯은 첫 번째 플롯과 겹치며, 선택된 플롯을 플롯하더라도 첫 번째 플롯에서 원하는 순서로 배치하지는 않으며, 첫 번째 플롯에서 지정한 행을 플롯합니다. 내가 원했던 것은 첫 번째 줄거리에서 다른 색으로 다른 행을 채색하는 것이 었습니다. –

답변

3

당신은 vegan:::plot.nestednodf을 입력하여 함수의 소스를 볼 수 있습니다. 실제로 행 색상을 조정할 기회는 없습니다. 이 함수는 아주 간단하지만 당신이 볼 수 있도록 당신은 당신의 자신의 버전 여기

myplot <- function (x, col = "red", names = FALSE, ...) 
{ 
    z <- x$comm 
    z <- t(z[nrow(z):1, ]) 

    if (length(col) == 1) 
     col <- c(NA, col) 
    else if (length(col)>1) { 
     z <- z*((col(z)-1)%%2+1) 
    } 
    image(z, axes = FALSE, col = col, ...) 
    box() 
    if (length(names) == 1) 
     names <- rep(names, 2) 
    if (names[1]) { 
     axis(2, at = seq(1, 0, len = ncol(z)), labels = rev(colnames(z)), 
      las = 2, ...) 
    } 
    if (names[2]) { 
     axis(3, at = seq(0, 1, len = nrow(z)), labels = rownames(z), 
      las = 2, ...) 
    } 
} 

난 그냥 색상이 지정된 값 사이에 교류 할 변경할 수있는 라인을 추가 작성할 수 있습니다. 첫 번째