How to customize arrow of directed graph (digraph)

31 visualizaciones (últimos 30 días)
Chris Endemann
Chris Endemann el 17 de Dic. de 2018
Respondida: Christine Tobler el 17 de Dic. de 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.

Respuesta aceptada

Christine Tobler
Christine Tobler el 17 de Dic. de 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.

Más respuestas (0)

Categorías

Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by