datastorm-open / visNetwork

R package, using vis.js library for network visualization
Other
545 stars 125 forks source link

How to make duplicate edges not overlap when physics is off #474

Open salk-law opened 1 month ago

salk-law commented 1 month ago

Here is a summary of my problem:

  1. My network has duplicate edges
  2. Duplicate edges are not easily visibly separable because they overlap perfectly
  3. I want no animation upon movement of nodes

I found https://github.com/datastorm-open/visNetwork/issues/95 to contain a working solution when physics is enabled by using barnesHut settings:.

Example of my situation:

# Reproducible example of problem
library(visNetwork)
library(data.table)
library(magrittr)
# For reproducibility
set.seed(1)

# Declare nodes
nodes = data.table(
  id = letters[1:10], 
  label = letters[1:10]
)

# Declare edges
edges = data.table(
  from = sample(letters[1:10], 10, replace = T), 
  to = sample(letters[1:10], 10, replace = T),
  color = "blue",
  dashes = T
)

# Add duplicate edges
edges.dupl = edges[rep(1:3, 1)][, `:=`(color = "red", dashes = F)]
edges = rbind(edges.dupl, edges)

# Render graph
visNetwork(nodes = nodes, edges = edges) %>%
  visNodes(physics = F) %>%
  visEdges(physics = F)