christophergandrud / christophergandrud/networkD3

How to stop automatic charge action (repelling) when manually repositioning node-link objects

Open
#312 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
R
Stars
659
Forks
259
PR merge metrics
No merged PRs in 30d

Description

Thank you for your wonderful tool. I have the following simple script example:

```r
# Load necessary libraries
library(networkD3)
# Sample data for disjointed links
links <- data.frame(
source = c("spaghetti", "vermicelli", "macaroni", "linguini", "angel_hair", "rainbow", "bow_tie", "orange", "orange"),
target = c("apple", "pear", "pear", "orange", "grape", "grapefruit", "mango", "cherry", "blueberries")
)
# Prepare nodes data frame to use name as node ID
nodes <- data.frame(name = unique(c(links$source, links$target)))
# Create the force network
network <- simpleNetwork(Data = links, Source = "source", Target = "target", height = 10, width = 10, linkDistance = 30, charge = -15, fontSize = 12, opacity = 5.0, zoom = TRUE)
# Save the network with the custom script
saveNetwork(network, file = "Example.html")
```

It results in a graph that has node text labels that overlap with nodes, link lines, and other text. Some of this can be resolved by manually repositioning the node link objects in question. However, every time you move anything in the canvas area even slightly it repels all node-link objects on the canvas. When there is a large number of node-link objects (>50), this expands the canvas to unreasonable proportions. This looks to be a function of the charge attribute. It is fully understood why this type of charge action would be useful. However, it would be helpful if there were some limits to this function.

With that said, is it possible to incorporate the same functionalities and constraints that we see in the D3 Disjoint force-directed graphs (https://observablehq.com/@d3/disjoint-force-directed-graph/2) into your tool? This will (1) allow the individual node-link objects (i.e., subgraphs) to be manually moved around with minimal impact to other node-link objects on the canvas, (2) prevent node-link objects from moving outside the field of view area, and (3) allow greater flexibility in shape and form of manual movements and placement of individual node-link objects to potentially reduce node text overlap with other nodes, link lines, and other text.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.