2017-12-04 1 views
1

(1,0), (0,1), (-1,0), (0, -1)에 노드의 위치를 ​​고정하고 싶습니다. 및 (0, 0). 그러나 그것은 작동하지 않으며 Java 지식은 0입니다 (Java 코드에 대한 질문은 here입니다).visNetwork 패키지에서 노드의 위치를 ​​지정하는 방법 R

아무도 도와 줄 수 있습니까? 다음은 그 예이다 :

require(visNetwork, quietly = TRUE) 
nodes <- data.frame(id = 1:5) 
        # x = c(1, 0, -1, 0, 0), 
        # y = c(0, 1, 0, -1, 0)) 
edges <- data.frame(from = c(1,2), to = c(1,3)) 

visNetwork(nodes, edges, width = "100%") %>% 
    visNodes(x = c(1, 0, -1, 0, 0), 
      y = c(0, 1, 0, -1, 0), fixed = TRUE, physics = TRUE) %>% 
    visOptions(highlightNearest = TRUE) %>% 
    visInteraction(navigationButtons = TRUE, dragNodes = FALSE, 
       dragView = FALSE, zoomView = FALSE) %>% 
    visEdges(arrows = 'from') 
+0

Java와 어떤 관련이 있습니까? – shmosel

+0

R 패키지는 Java (내가 이해 한 것)를 기반으로하며,이를 해결하기 위해 Java를 이해해야 할 필요가 있다는 것에 두려움이 있습니다. 내 편집보기 ... – Christoph

+0

자바와 자바는 완전히 별개의 언어입니다. – shmosel

답변

1

당신은 필요한 경우 수직 축 플립

coords <- matrix(ncol=2, byrow=T, data=c(
    1,0, 
    0,1, 
    -1,0, 
    0,-1, 
    0,0)) 
opts <- . %>% visOptions(highlightNearest = TRUE) %>% 
    visInteraction(navigationButtons = TRUE, dragNodes = FALSE, 
       dragView = FALSE, zoomView = FALSE) %>% 
    visEdges(arrows = 'from') 

visNetwork(nodes, edges, width = "100%") %>% 
    visIgraphLayout(layout = "layout.norm", layoutMatrix = coords) %>% 
    opts 

또는

nodes$x <- c(1, 0, -1, 0, 0)*100 
nodes$y <- c(0, 1, 0, -1, 0)*100 
visNetwork(nodes, edges, width = "100%") %>% 
    visNodes(fixed = TRUE) %>% 
    opts 

enter image description here

사용 coords[,2] <- coords[,2]*-1을 할 수 있습니다.

+1

확인. 그러나 'visNodes (x =, y =)'인수가 의미하는 바를 이해합니까? – Christoph

+0

그리고'fixed = TRUE, physics = TRUE'도 필요없는 것 같습니다. – Christoph

+0

@Christoph 실제로, 내 나쁜 것을 보지 못했습니다. 마치 그것이 당신이 생각하는 것을 의미하는 것처럼 보입니다. 그것들을 당신의 데이터 프레임에 추가하면, 'visNodes'는 그것들을'node $ x <- c (1, 0, -1, 0, 0) * 100; 노드 $ y <- c (0, 1, 0, -1, 0) * 100; visNetwork (노드, 가장자리, 너비 = "100 %") %> % visNodes (고정 = TRUE)'. 그러나 기본 좌표계의 한계가 무엇인지 모르겠습니다. – lukeA

관련 문제