According to the documentation, GraphLayout has an EdgeBundling suboption, which can take the following values:

  • "DividedEdgeBundling"
  • "HierarchicalEdgeBundling"
  • "StraightLine"

What does each do, what suboptions do they have, and how do I use them?

Partial answer:

"StraightLine" seems self explanatory, but not that it's not the default:

Mathematica graphics

"DividedEdgeBundling" is described by István in this answer.

That leaves "HierarchicalEdgeBundling", which I cannot figure out. It seems to behave the same as "StraightLine" in naive attempts to use it.

The suboptions of these can be discovered by passing a wrong value and looking at the error message:

Mathematica graphics

This also reveals that there are several more suboptions to DividedEdgeBundling than the linked post above shows.

Mathematica graphics

Link to Community semi-cross-post

  • $\begingroup$ Related: (5308). $\endgroup$ – Silvia Oct 1 '15 at 9:17
  • $\begingroup$ @Silvia Thanks! I actually found this and linked it in the question. So DividedEdgeBundling is mostly solved (except for understanding a few suboptions). What I'm really curious about is HierarchicalEdgeBundling. $\endgroup$ – Szabolcs Oct 1 '15 at 9:30
  • $\begingroup$ Sorry I missed that link. Am curious about the "HierarchicalEdgeBundling" too. +1 $\endgroup$ – Silvia Oct 1 '15 at 10:21
  • $\begingroup$ Try this: "EdgeLayout" -> {"HierarchicalEdgeBundling", "SplineWeight" -> Automatic}. $\endgroup$ – Silvia Oct 1 '15 at 10:28
  • $\begingroup$ @Silvia I really wonder why this is not advertised more! Screenshot. Can you post an answer? $\endgroup$ – Szabolcs Oct 1 '15 at 10:49

I can't find available settings other than Automatic, by which there seems no differences between "SplineWeight" and "LCARemove":

elst = RandomGraph[{10, 30}] // EdgeList;
                VertexLabels -> "Name",
                GraphLayout -> {
                        "EdgeLayout" -> {
                                # -> Automatic
                ] & /@ {"SplineWeight", "LCARemove"} //

Graph layout with "HierarchicalEdgeBundling"


According to halmir, LCARemove take All and None. SplineWeight is not supported.

  • $\begingroup$ In LCARemove, LCA stands for lowest common ancestor. By trial and error, the values None and All work (and make a difference). $\endgroup$ – Szabolcs Oct 1 '15 at 13:13
  • $\begingroup$ Yes, LCARemove take All and None. SplineWeight is not supported... $\endgroup$ – halmir Oct 1 '15 at 13:15
  • $\begingroup$ Some discussion of LCA removal can be found here: win.tue.nl/vis1/home/dholten/papers/bundles_infovis.pdf $\endgroup$ – Szabolcs Oct 1 '15 at 13:25
  • $\begingroup$ @halmir What about DividedEdgeBundling? Could you explain some of the suboptions in an answer? $\endgroup$ – Szabolcs Oct 1 '15 at 13:26
  • 1
    $\begingroup$ @halmir Two more questions: 1. Is there a better way to handle custom attributes? Part of this question is whether it's easy to transfer one attribute into another one, e.g. import a GML then use a custom property as standard EdgeCapacity. 2. There's a disconnect between WeightedAdjacencyGraph and WeightedAdjacencyMatrix in that one represents missing edges with Infinity, the other with 0. Is there some easy way to get them to use the same format? Can I choose whether I want to use Infinity or 0 for this purpose? $\endgroup$ – Szabolcs Oct 1 '15 at 14:43

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.