# How to use the “EdgeLayout” suboption of GraphLayout?

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?

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

"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:

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

• Related: (5308). – Silvia Oct 1 '15 at 9:17
• @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. – Szabolcs Oct 1 '15 at 9:30
• Sorry I missed that link. Am curious about the "HierarchicalEdgeBundling" too. +1 – Silvia Oct 1 '15 at 10:21
• Try this: "EdgeLayout" -> {"HierarchicalEdgeBundling", "SplineWeight" -> Automatic}. – Silvia Oct 1 '15 at 10:28
• @Silvia I really wonder why this is not advertised more! Screenshot. Can you post an answer? – 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;
Graph[
elst,
VertexLabels -> "Name",
GraphLayout -> {
"EdgeLayout" -> {
"HierarchicalEdgeBundling",
# -> Automatic
}
}
] & /@ {"SplineWeight", "LCARemove"} //
FlipView


# Edit:

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

• In LCARemove, LCA stands for lowest common ancestor. By trial and error, the values None and All work (and make a difference). – Szabolcs Oct 1 '15 at 13:13
• Yes, LCARemove take All and None. SplineWeight is not supported... – halmir Oct 1 '15 at 13:15
• Some discussion of LCA removal can be found here: win.tue.nl/vis1/home/dholten/papers/bundles_infovis.pdf – Szabolcs Oct 1 '15 at 13:25
• @halmir What about DividedEdgeBundling? Could you explain some of the suboptions in an answer? – Szabolcs Oct 1 '15 at 13:26
• @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? – Szabolcs Oct 1 '15 at 14:43