2

I have to create a social network with a lot of data. I use visJs and the network is very slow.

I tried these plugins: Cytoscape, visJs, Vivagraph and sigma.

Problem for Visjs, cytoscape and sigma

  • They are very slow

Problem with vivaGraph

  • I can't render a webglGraph with a svgGraph so I can't have a lot of node and edge and put an arrow on the edge.

Advantage of vivaGraph:

He is really fast because I can render the graph with webGl. But I can't or I don't know how to add graphic with this plugin.

With visjs:

  • I can initialize the graph quickly because I am able to keep the positions in the database and I can deactivate physics.

The problem is that I cannot make any changes because, when a point is added dynamically, all the other points must be recalculated and it is too long with visJs.

I have and I want something like that (It's done with visJs): All the network enter image description here I want be able to do that:

  1. Modify node and edge color, size, name etc.

  2. update and generate the graph quickly with minimum 10 000 nodes.

  3. Layout similar to the one I showed (If possible group them by color)

So I have two questions:

  1. Is there a way to dynamically add quickly with visjs after initialization?

  2. how I could generate my graph quickly knowing that I have at least 10,000 nodes?

Is there a technique used to generate the graph quickly with a good layout?

double-beep
  • 5,031
  • 17
  • 33
  • 41

1 Answers1

1

I found a solution to a simile problem with a sublibrary of VivagraphJS.

My problem was to build a very big graph (All (or partial) transaction bitcoin).

I decided to used ngrah.* module, these modules is very optimized for the velocity.

Well, the introduction to ngraph.* modules, is inside the readme, but these modules give the possibility to make the personal rendering in your graph.

The modules are:

There is a lot of submodules, take your time to see all.

For the big graph, you can use the pre-computation layout offline, there are two modules that you can use:

  • ngraph.native: it makes the layout offline, make a file with .bin extension.
  • ngraph.offline.layout: it makes the layout after your graph is loaded and before your graph is paint.

And you can paint the graph with a different submodule, like ngraph.pixel

Conclusion

I think it is a very good open-source solution to paint a graph and a big graph, In the follow I will post my configuration with my submodule and to end I will post the link to my project and a youtube video.

Configuration

You can found a video on youtube

The source of my project is available here, maybe it can help you.

I hope my answer helping you.

vincenzopalazzo
  • 1,487
  • 2
  • 7
  • 35