2017-12-04 18 views
1

(1,0)、(0,1)、(-1,0)、(0、-1)のノードの位置を修正したいと思います。および(0,0)を含む。しかし、それは動作しませんし、私のJavaの知識はゼロです(これは、hereはJavaコードの問題です)。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

JavaとJavascriptは完全に別の言語です。 – 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