Graph visualization for web application

Hi, I am looking for a visualization tool that can visualize the data similar to Neo4j Desktop, namely given a query, it displays the results on the html page, and potentially, when you click a particular node, it can expand from that node to other connected nodes.

I searched and found this page listing a number of web based neo4j visualization:

Are they the right tools I am looking for? If yes, which one is better for my needs as described above? I am mostly interested in open source tool.

Personally I use Cytoscape.js, I got a custom little script that modifies the output to match how I want it to look (shapes, sizes, colors etc). I tried Sigma as well.

How big a network do you want to visualize? Do you care for different layouts and customization?

What types of graphs are you wanting to create? If it's replications of the Neo4j desktop, then the visualization tools suggested by Neo4j, which you reference, would do.

If you are looking for other types (dendrograms, phylogony, Sankey, etc.) then you might consider D3? Some D3 tempates incorporate graph analytics to size edges and nodes based on weigths, centrality, etc. Other templates create communities using algorithms (Page propagation, Louvain).

Hi, @genealogy, I just want to replicate what I can do in Neo4j Desktop, namely, issue a query and display the result in visualization as Neo4J desktop does. Importantly, I hope it won't be a static graph, meaning that if I click a node, it can expand automatically, creating a user interaction effect. Neo4J Desktop does that? Does Neovis.js can achieve that?

@bjoernoesth The network could be big, let's say millions of nodes and relationships. But for a given query, it could display a small subgraph as Neo4J Desktop does. If users want to see more, it can expand to other nodes and relationships. I quickly read some graph examples on Cytoscape's website, it seems it doesn't display the relationship (i.e. Acted_In) on the graph? It does support user interaction.

Ok but you only want to display lets say a few hundred nodes and edges at a given time?
I personally use colored edges since I dont run have many different types I display. Here is a quick example

But I think you can add labels if you want.

But to be honest I think most of them should solve your problem.

That looks ok, although the graph doesn't look as nice as those from Neo4j Desktop.

You can use SVGs as nodes and style it exactly how you prefer.

Hi everybody,
for an approach to visualize a Neo4j graph have a look to the discussion in:

distinguishes left click to select, left hold to expand, right click then suddenly left hold to expand the selected, right click to menu.
It's a modification of NeoVis plus some messed JS, still in progress, not yet in GIT. Write me for a complete interface. Save the html with its JS and connect to your own DB.

1 Like

is your script JS or python? I'm about to start on the same, would appreciate if you can share anything.