Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

visNetwork with R: How to prevent nodes from overlapping with edges

Tags:

r

visnetwork

I am using visNetwork (for its dynamic visualizations) to visualize a bipartite graph with 47 nodes.

visNetwork(nodes, edges) %>%
     visIgraphLayout(layout = 'layout.davidson.harel')

It came out like this.

The image above is what it looks like currently and it's the best we could come up with after trying a few layouts (Fruchterman Reingold etc). The problem I have with this is that the edges tend to be so long, so some node pairs are very far apart. Can anyone suggest a layout that prevents nodes from overlapping with edges?

like image 770
iamnarra Avatar asked Sep 29 '17 07:09

iamnarra


1 Answers

The size of your dataset suggests that it may be acceptable to rely on visNetwork to compute the layout coordinates, rather than igraph via visIgraphLayout:

visNetwork(nodes, edges) %>%
    visPhysics(solver = "forceAtlas2Based",
               forceAtlas2Based = list(gravitationalConstant = -100))

Layout via visNetwork

For comparison, the same data plotted with igraph:

visNetwork(nodes, edges) %>%
   visIgraphLayout(layout = 'layout.davidson.harel')

Layout via igraph

like image 179
ombtom Avatar answered Nov 02 '22 21:11

ombtom