I used d3.js back in 2016 and it was already at that time very nice, but I always had problems to keep control of it (a lot of code and the end-results sometimes didn't work 100% as intended as my code did not cover all possible constellations of potential input data).
If I remember correctly after a while I then tried Cytoscape ( https://cytoscape.org ) and coding was a lot simpler and the results were more stable. I then dropped the project but I left with a positive impression of Cytoscape. There was maybe as well some other good candidate, but I just cannot remember anymore... (something that was doing at that time initial experiments with WebGL as optional/secondary output-engine - was it Cytoscape or something else?) .
Of course if you need max flexibility and very special results then D3 is #1.
For anyone confused by the link - Cytoscape confusingly exists as both a javascript library and a Java desktop application. Cytoscape the desktop application is a very biology-focused network visualization/analysis platform, whereas Cytoscape.js is a pretty general purpose network/graph library. You can find Cytoscape.js at [https://js.cytoscape.org/].
I used Cytoscape on a recent project[1] after trying d3 initially. It still works beautifully! Although its performance is not so great if you have more than a thousand nodes/few thousand edges or so.
I used d3.js back in 2016 and it was already at that time very nice, but I always had problems to keep control of it (a lot of code and the end-results sometimes didn't work 100% as intended as my code did not cover all possible constellations of potential input data).
If I remember correctly after a while I then tried Cytoscape ( https://cytoscape.org ) and coding was a lot simpler and the results were more stable. I then dropped the project but I left with a positive impression of Cytoscape. There was maybe as well some other good candidate, but I just cannot remember anymore... (something that was doing at that time initial experiments with WebGL as optional/secondary output-engine - was it Cytoscape or something else?) .
Of course if you need max flexibility and very special results then D3 is #1.