MATLAB Answers


Setting EdgeColor in 2015B+ for graph.m

Asked by Matlab2010 on 11 Mar 2016
Latest activity Commented on by Steven Lord
on 11 Mar 2016
In 2015B graph.m is introduced graph.m.
A = ones(4) - diag([1 1 1 1]);
G = graph(A);
h=get(gca, 'Children');
%set(h, 'EdgeColor', 'red'); % I could do this but it sets all the edges red.
%set(h, 'EdgeColor', new_cols(i,1)); %I would like to be able to set each edge indivdualy.
How do I set individual edge colors?


Sign in to comment.


1 Answer

Answer by Mike Garrity
on 11 Mar 2016
Edited by Mike Garrity
on 11 Mar 2016
 Accepted Answer

It wants an array with 3 columns, and one row for each edge. The columns are the red, green, and blue components of the color for the edge which corresponds to the row.
The colormap functions return arrays of this type, so we can do things like this:
A = ones(4) - diag([1 1 1 1]);
G = graph(A);
h = plot(G);
h.EdgeColor = lines(G.numedges);
But you could create the array some other way.

  1 Comment

In addition to what Mike said, if you want to make one particular edge or a few edges stand out rather than changing the color of every edge, take a look at the HIGHLIGHT function.
% Create the complete graph on 4 nodes (no self loops)
A = ones(4) - eye(4);
G = graph(A);
% Plot it with red edges of width 2
h = plot(G, 'EdgeColor', 'r', 'LineWidth', 2);
% Highlight the edge (2, 3) in black and make it width 5
highlight(h, 2, 3, 'EdgeColor', 'k', 'LineWidth', 5)

Sign in to comment.