By graph here I mean something resembling these images:
The ideal solution would:
- use only managed code
- allow output to a bitmap image
- allow output to WPF elements
- include some kind of interactive surface for displaying the graph that supports zooming, panning and reorganisation of nodes
I'm also interested in hearing about projects that could potentially be used as the starting point for this kind of work. If it requires some development to achieve what I want, then I'm prepared to tackle it. The most complex portion of this goal seems to be obtaining the graph layout in a reasonable time frame.
Just to make the list of options complete: Graphviz4Net is open-source implementation of what Coincoin has suggested in his answer.
The boys at Mindscape have such a tool
With the imaginative name WPF Flow Diagrams
Also, check out Vertigo's Family.Show demo project, it has a simple form of this
When I did some work involving graphs last summer I found the best option that wasn't overly expensive was to manually do it in SVG, i.e. write out an SVG file from a bunch of strings, and render that out to an image using Inkscape.
This is not a quick and easy solution, but it does allow for near-infinite customisation, so it might be nice if you have to organise the graphs or do spatial organisation based on connections etc.
Graph# is also another option. I haven't used it personally, but I've been meaning to get around to looking over it.
I have been playing on GLEE/MSAGL and the actual layout per se is good enough for what I need however I'd like to be able to have more control over what is actually inside the nodes rather than just a single value like now.
For example I'd like to have "details" that are hidden until I click on an expander in the node, or double click the node or hover with the mouse.
Assuming GLEE cannot do this are there now any pure .NET solutions available that could do it?
Its not .NET, but an often referenced toolkit for rendering graphs is AT&T Graphviz. I've only used the free-standing applications myself, but the source code is available under something resembling an open source license.
Graphviz is used by the popular code documentation tool doxygen to automatically draw various diagrams for its generated documentation.