At my work we're currently doing some research into data visualisation for highly inter connected data, basically graphs.

We've been implementing all sorts of different layouts and trying to see which fits best, but, due to the nature of the problem --it's a visual thing - we needed to come up with some automated way to analyse the result so welcome up with a bunch of metrics to analyse our layouts.

So far, the most important metrics have been information density, edge crossings, node overlap and edge length. This gives us some good results and has allowed us to fine tune our layout algorithms.

However, when a new graph is loaded, we noticed that humans still tend to fiddle a lot with the structure of the layout. Moreover, it seems that our metrics do a good job of predicting where a user is likely to mess around. Graph layout is a tough problem, so after some discussion, the idea of just throwing data at a neural network and let it figure it out came up.

None of us are experts, or even experienced in AI. I'm the one with the most contact with AI methods. All I've ever done were simple NN models, no convolution, feedback or feedforward or anything of the sorts, but it seems to me this should be doable.

Maybe it's my lack of expertise here but I haven't been able to find any good information on this sort of application for NNs, so I was hoping someone here could point me in the right direction.

  • What sort of model is best for such a situation? and why? Is this actually possible or would it be super complicated? Has anyone ever tried something like this before?

If it helps, our input data (for v1, I guess) would be two arrays of variable length, one for the nodes and another for the relationships between them and the output data would be an array with the node XY coordinates.

Any help would be greatly appreciated! Cheers!


I doubt that this problem is a good application of NN. Take a look at this https://en.wikipedia.org/wiki/Force-directed_graph_drawing. And try Graphviz if you haven't already. Drawing graphs in a meaningful way is notoriously difficult.

An alternative approach would be to embed all nodes into a 2d or 3d metric space. I.e. for each node you will have coordinates of a point in such space. If you have certain rich descriptors of the nodes (i.e. some kind of information associated with each node, pictures, text, vectors of numbers) that can be done even with a NN. To have a good embedding you need more info than just node degrees or/and edge weights.

  • $\begingroup$ We are aware of Force layouts and other such algorithms. In fact, we've been improving on them, but we wanted to try a different approach, as we will never get rid of some of their limitations. Our own rendering software is, imo, already way better than Graphviz so that doesn't help either. Thank you for your second suggestions though! $\endgroup$ – tiansivive Mar 14 '18 at 9:30

Neural networks are used to visualize high dimensional data through the use of autoencoding. It's similar to Principal Component Analysis and is regarded to perform better then PCA. Autoencoding will take your data and convert it to a 2 or 3-dimensional representation. Since you have an array of data you might want to use LSTM. You will have to make sure you reset the LSTM states when you perform the reverse pass. You will probably have trouble interpreting the autoencoded form of the data though, so that will be a task of its own.

  • 1
    $\begingroup$ Thanks for the information, particularly about autoencoding. We'll investigate further although we're now more focused on other tasks. I'll get back to you eventually whenever we investigate this and give you some feedback on our successes and failure :) Cheers $\endgroup$ – tiansivive Mar 14 '18 at 9:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.