Multiple edges and customizing label color

Jul 1, 2009 at 7:49 PM

I'm evaluating NodeXL for some visualization needs we have and wanted to see if support for 2 features that I'm looking for are available, and if not if they are in the roadmap.

The first feature I'd like support for is having multiple edges between nodes.  The edges represent unique relationships between the two nodes, and thus we'd like to have both edges show in the graph, and would likely color code the edges to differentiate them.

The second item is that  I'd like to be able to color the "secondary label" of a node differently then I color the node itself.  So my label would always be black, while the color of the node may change to represent some node attribute.

Are either of these currently possible with NodeXL?  If not are they planned?  

~ Steve

ps - within a separate thread I'm going to inquire about how to contribute "patches" to NodeXL.  I'd be happy to add support for the second item as it appears to be straight forward given a quick look at the code

Jul 1, 2009 at 9:34 PM
Edited Jul 1, 2009 at 9:35 PM

Steve -

Thank you for the interest in NodeXL!

Your requested work item to enable multiple edges between nodes is a good one.  Our current edge types do not allow for spatial distinct edges, each of the edges are layered on top of one another when multiple edges are present.

To support your request we will need to implement non-linear edges that curve or bow out between nodes.  This is a non-trivial task, I think.

I have added the work item request to our pending list.

This may be a good candidate for the community contributed code feature you mentioned in a separate thread.  When completed, the NodeXL team may be able to be briefed on a psuedocode level that would help us implement the feature in the main release.

The label features have been scheduled for implementation and will be released in a few weeks.




Jul 1, 2009 at 9:48 PM
Edited Jul 1, 2009 at 10:00 PM

To expand on Marc's comments regarding duplicate edges:

Our own NodeXL application, the Excel 2007 template, handles duplicate edges by giving users the option to merge them, and then allowing the resulting Edge Weight column to be mapped to an edge property such as width or opacity.  So we don't have a strong need for drawing duplicate edges ourselves.

If you wanted to do this yourself, you could modify the EdgeDrawer class:

I see two challenges.  The first is figuring out how to draw a potentially unlimited number of Bezier curves between two points without overlap and without exceeding the graph bounds.  The second is modifying the overall edge-drawing logic in GraphDrawer that calls the EdgeDrawer class.  Right now, GraphDrawer simply iterates through the graph's edge collection without regard to duplicates.  This would need to be modified to detect any duplicates and tell the EdgeDrawer to draw them appropriately.

Certainly not impossible, but not trivial, either.


Jul 3, 2009 at 5:25 PM

Thanks for the details Marc & Tony.  I agree that supporting multiple edges in such a way that the edges don't overlap is probably a non trivial task, however, it seems like it would be of value...and I'm not just saying that because it would be of value to me :)

It'd be great if there was some sort of roadmap that was publicly available so we outsiders could see when the features we're looking for are tentatively planned so we could make some decisions about where to spend out time contributing.  Does such a place exist?  And if so, how often is it updated?

Thanks for the feedback and excellent work with NodeXL.  If I make any progress on adding multiple edge support I'll report back here.