Filter löschen
Filter löschen

How to customize arrow of directed graph (digraph)

27 Ansichten (letzte 30 Tage)
Chris Endemann
Chris Endemann am 17 Dez. 2018
Beantwortet: Christine Tobler am 17 Dez. 2018
I am attempting to plot a weighted directed graph that displays weights via augmenting edge thickness. My (pseduo)code thus far is:
G=digraph(weights);
G.Edges.Weight=weightsVec;
G.Edges.LWidths = 6*G.Edges.Weight/max(G.Edges.Weight);
p=plot(G);
p.LineWidth=G.Edges.LWidths;
p.ArrowSize=15;
This works pretty well, but I find that the increased edge widths covers up arrowheads on some of the edges. An obvious fix would be to use larger arrowheads, but this usually ends up looking terrible if your graph has many connections of varying weights (arrowheads look ridiculously large for weights of smaller magnitute). Another way to fix this would be to change the color of the arrowhead (and not the edge, itself) or change the position of the arrowhead to the end of the edge line. Both options appear to be unavailable for the directed graph object. Does anyone have any workarounds?
P.S. I know that there is an option to use a color scale to display edge weights, but I am trying to avoid this approach.

Akzeptierte Antwort

Christine Tobler
Christine Tobler am 17 Dez. 2018
Since R2018b, there is a property ArrowPosition which allows the arrowhead to move around along the edge.
There is no way of changing the color of the arrowheads separately from the color of the edge. If you really want this, I'd suggest making two graph plots, one on top of the other, and setting edge LineStyle to 'none' for one (which represents the arrows only), while setting ShowArrows to false for the other (which represents only the edges). At that point, you can choose two different edge colors that will affect either the edge lines or the arrows.

Weitere Antworten (0)

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by