2017-05-01 15 views
0

나는 ctree를 생성했으며 추가로 편집하려고합니다.R에서 ctree 레이블을 편집하는 방법

내 코드는 다음과 같습니다

plot(ct, 
    main = expression('Suitable Brook Trout Habitat (m'^2*'/100m'^2*')'), 
    inner_panel = node_inner(ct, fill = c("white"), id = FALSE), 
    terminal_panel = node_boxplot(ct, col = "black", fill = "lightgray", 
    width = 0.5, yscale = NULL, ylines = 3, cex = 0.5, id = FALSE) 
) 

ctreeimage

내가 (16.4 m로 그것을 좋아하는 것)을 상자 그림과 같은 16.4로 변수 y 축에 레이블을 추가하고 싶습니다.

도움을 주시면 감사하겠습니다.

답변

1

다른 패널에서 다른 작업을 수행하기 위해 패널 기능을 조정해야하기 때문에이 작업을 수행하는 것은 간단하지 않습니다. 예를 들어 노드 1의 두 모서리에만 미터가 필요하고 노드 2의 왼쪽에 y 축 레이블이 필요합니다. 물론 노드 4와 노드 5에서 y 축 레이블을 반복 할 수도 있지만 중복 될 것입니다. 그것은 시각적 인 혼란을 피하기 위해 그것을 생략하는 주된 동기였습니다.

따라서 위에서 제안한대로 플롯을 만든 다음 필요한 비트와 조각을 수동으로 추가하는 것이 좋습니다. 이렇게하려면 viewport이라는 grid 시스템을 활용할 수 있습니다. 이것들은 내부 노드, 가장자리 및 모든 터미널 노드 용으로 작성된 플롯 영역입니다. 기본적으로 뷰포트는 플롯 생성 후 삭제됩니다 (pop 핑 뷰포트는 grid 전문 용어로 표시됨). 하지만 pop = FALSE으로 설정하면됩니다. 모든 뷰포트에는 네비게이션에 사용할 수있는 이름이 있습니다. 재현 예를 들어

는 또한 세 개의 터미널 노드와 나무를 얻을 수있는 R의 cars 데이터를 사용 :

줄거리는 다음 단지에 추가 pop = FALSE으로 예에서와 같이 설정할 수 있습니다

library("partykit") 
ct <- ctree(dist ~ speed, data = cars) 
말 : 우리는 라벨 "node_boxplot3plot"와 뷰포트로 이동할 수 있습니다 노드 3의 y 축 레이블

plot(ct, 
    main = expression('Suitable Brook Trout Habitat (m'^2*'/100m'^2*')'), 
    inner_panel = node_inner(ct, fill = c("white"), id = FALSE), 
    terminal_panel = node_boxplot(ct, col = "black", fill = "lightgray", 
    width = 0.5, yscale = NULL, ylines = 3, cex = 0.5, id = FALSE), 
    pop = FALSE 
) 

. (귀하의 경우에는 3 대신 2 노드가 필요합니다.) 그런 다음 grid.text()을 사용하여 y 축 레이블을 추가 할 수 있습니다. 좌표는 -3 가로 (텍스트) 라인 및 수직 중간 (0.5 정규화 친 좌표)

seekViewport("node_boxplot3plot") 
grid.text("Hello World!", 
    x = unit(-3, "lines"), y = unit(0.5, "npc"), rot = 90) 

가 마지막으로, 노드 (1)로부터 제 1 및 제 2 에지 라벨에 "m" 추가 이러한 "edge1-1"라고 및 각각 "edge1-2". 함께이 수율

seekViewport("edge1-1") 
grid.text("m", x = unit(0.5, "npc") + unit(1, "strwidth", "< 17")) 
seekViewport("edge1-2") 
grid.text("m", x = unit(0.5, "npc")+ unit(1, "strwidth", "> 17")) 

:

ctree with enhanced labels

이제 수평 위치는 다시 뷰포트 (o.5의 NPC)의 중간 플러스 (귀하의 경우 "< 16.4") 문자열 "< 17"의 폭