How to draw social network fast with a lot of data (Visjs, cytoscape, sigma and vivaGraph)?

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

Problem with vivaGraph

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:

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?

Upvotes: 2

Views: 2149

Answers (1)

vincenzopalazzo
vincenzopalazzo

Reputation: 1645

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.

Upvotes: 1

Related Questions