The IGraphM package (which is truly fantastic) now features a simple graph editor.
Many attempts are made on stackexchange (I also created some but was never really happy about them) to create a graph editor but this seems the first true attempt to create one in a package as open source (that I know of).
The editor is fast a simple to use and is a great starting point? for further development?
I’m wondering what the development strategy or goal is.
I presume the goal is to create simple graphs (up to 450 nodes following the documentation).
I use graphs often to visualize relations between items in datasets and I build knowledge graph based on text (research text mining).
What would I like to be added
Change VertexSize for selected or multi selected Vertices
Change VertexStyle (colour etc) for selected or multi selected Vertices
Change VertexLabels and their position for selected Vertices
Change and create EdgeLabels and their position
MultiSelect vertices and then reposition them in e.g. CirclePoints, Elipse points or any defined distribution function. (I asume not very easy to make)
Thanks for Szabolcs and Kuba for developing this package!
Thanks for the feedback! These are all good suggestions. We’ll have to see how far we can go without compromising performance. I’m sure Kuba will pitch in too once he’s back from holidays.
It is a nice idea to edit not just labels but also label positions.
It might be interesting to be able to apply a layout to the graph interactively, and it shouldn’t be too difficult. This would aid editing. Rearranging a subset is a different matter.
Please keep the suggestion coming!
Something I’d love to see implemented is IGGraphEditor[Dynamic[g]], i.e. use the graph editor as an interactive control, and dynamically re-compute some graph properties as soon as the graph is changed.
What would be even nicer is to also update the graph appearance (e.g. vertex size or colour) within the editor based on these recomputed properties. But I’m not confident that this much would be feasible …
Oh Yes! I tried it today and it didn’t work but I thought this would be to complicated.
With my lame attempts I edited a graph object directly and then this is indeed dynamic but also slow when many nodes are present. I guess after 100 nodes it gets ugly.
I think that perhaps a small interface based on AttachCell might be something to change properties on edges and vertices etc. Or generate a small interface with autocomplete inputfield for Vertex1 and Vertex 2 (and edges) plus some action buttons (like create Edge between V1 and V2) etc.
Another suggestion might be to zoom in and out on parts of the Graph (or select parts like, You pick say v1 and get all attached vertices up to level x connections deep. Kind of a drill down. Or select a region etc.
I’d like to have the ability to color or label nodes. In particular, my use case is building ZX diagrams in Mathematica, which I would really rather not do programmatically, and then evaluating them (either by brute-force conversion to a tensor network or by applying ZX rules).
@robertmaxton42 Thanks for the feedback! Colouring and labelling nodes is definitely a feature we are looking into. Mathematica’s GUI features do have limitations, so it’s unclear how far we can go, but this feature is definitely one that we’ll be experimenting with.