Edge Overlap fix or workaround

Apr 17, 2015 at 9:20 PM

I found this thread from 2013: https://nodexl.codeplex.com/discussions/429163 that said edge overlaps are something that NodeXL is planning to build in eventually. This would really help me with the analysis that I need to do, as I am trying to avoid edge overlaps and right now am manually moving vertices but this is taking forever!

Does anyone have a fix for this - either code, some kind of formula or workaround in Excel, or another strategy?

I am using a polar layout, and have data in somewhat concentric rings rotating around the center. It would be helpful to have a fix created where the vertices would continue on their rotational path to "fan out" more to avoid overlapping with each other at the same radius around the center (make sense?).
Apr 17, 2015 at 9:22 PM
Oh and just reading my post, I want to avoid edge AND vertex overlap although I didn't specifically mention that.
Apr 17, 2015 at 10:31 PM

Thanks for the interest in NodeXL!

NodeXL may not have exactly what you are looking for, but I have a possible solution.

Each vertex has an attribute called "Layout Order".

Select the Layout Order via: NodeXL>Visual Properties>Autofill Columns>Vertices>Pick any data attribute.

Perhaps you can upload your data set to the NodeXL Graph Gallery to allow other users to try to improve your layout?


Apr 21, 2015 at 4:39 PM
Thanks Marc! I will post it in the graph gallery today to see if people can come up with a better solution.
Apr 21, 2015 at 4:56 PM
Ok I posted it up there. Here is the link: http://www.nodexlgraphgallery.org/Pages/Graph.aspx?graphID=43815 If anyone has the time or curiosity to look at it, I also included the workbook with my primitive attempt to get it to layout properly!! The vertices are kind of in the right place but I want them to not overlap, thereby widening the layout of the graph as a whole at the various rings / layers.

I think the best approach might be to code something or look at the largest layer first, since in the orgs it's most common to have a fat middle management layer. I've manually attempted this on another version that I have. So, let's say the largest layer for example is layer 5 with 100 vertices (making this up it is not reflective of my data). Then the thinking would be to take 360 degrees divided by 100 and evenly space them along the same radius with different angles depending on this spacing factor. This creates a nice circle at the "widest" radius layer in the graph and a good starting point.

The problem I am at now is how to then graph the other vertices either further out (at a further layer and radius from the center) or closer to the ego (at a small layer and radius from the center). You really have to use the x y coordinates of the layer you just graphed and then take into account which vertices are connected to those, in order to take into account the relative angle around that particular vertex. I cannot figure out how to do this. My best approach has been to look at the vertex angle, then determine how many vertices point towards that one vertex, and include a spacing factor of an arbitrary 10 degrees and assign a position to each vertex (so, vertex A with position of 3 out of 5 reporting to vertex B would be at [Supervisor Angle + (Spacing Factor of 10 degrees * Vertex position of 3)].

It seems that with the graph area (I have it up on a separate monitor) the max amount of vertices I can really plot avoiding overlaps with this method is around 500-600 if you really squish them in there with a LOT of manual manipulation.

I am really going crazy with this! If there is a coder out there who understands my problem and can create an algorithm or modification to the code to help with this I would also be willing to work with you offline since this is for a consulting project. I need to have something done ASAP so any and all help would be so much appreciated. I bought the Node XL book, have been hunting around on this website and also asking some co-workers and can't really get past this point.