d3 tends to be very low level and there are a few successful libraries built on top of it.
Co-occurrence graph library certainly would be popular.
In my visualisation I've spent the most time fiddling with JavaScript and currently it's the bottle neck of quality of the visualisation.
My another problem was that due the graph size it took ~1 minute to stabilize[1] on my browser and it was very wobbly and janky. I had to pre-load nodes positions and disable animation to make it usable for viewers. The fully automated analsysis of big graphs would require some server side component pre-computing the graph.
1. It was stabilizing quicker with smaller collision (newly introduced in d3 v4 force layout) parameter, but nodes were more likely to overlap.
My another problem was that due the graph size it took ~1 minute to stabilize[1] on my browser and it was very wobbly and janky. I had to pre-load nodes positions and disable animation to make it usable for viewers. The fully automated analsysis of big graphs would require some server side component pre-computing the graph.
1. It was stabilizing quicker with smaller collision (newly introduced in d3 v4 force layout) parameter, but nodes were more likely to overlap.