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.