MATLAB: How to choose different colors for nodes

graphgraph theoryhighlightnodecolor

t = [1 1 1 1];
h = [2 3 4 5];
g = graph(t,h);
p = plot(g);
g.Edges.value = [10; 20; 20; 100];
g.Nodes.value = [0.3; 0.564; 12; 1; 0.005];
g.Nodes.NodeColors = g.Nodes.value;
g.Edges.EdgeColors = g.Edges.value;
p.NodeCData = g.Nodes.NodeColors;
p.EdgeCData = g.Edges.EdgeColors;
q= plot(g,'NodeCData',g.Nodes.NodeColors);
colorbar
t is the source node as input and h is demand node as output. I want to two different colors for input and output. But I don't find correct way. Plz help me to solve it.

Best Answer

When you call plot on your graph or digraph object, specify the 'NodeColor' property. For example, here are two ways to create a digraph like the one in your example and plot it with node 1 being red and the others being green. I put each in their own figure window so you can compare the results.
d = digraph;
d = addedge(d, 1, 2:5);
You can explicitly specify a numnodes(d)-by-3 matrix of RGB values:
figure
p = plot(d, 'NodeColor', [1 0 0; 0 1 0; 0 1 0; 0 1 0; 0 1 0]);
Or you can plot with all the nodes being the same color and highlight ones that are in some way 'special'.
figure;
h = plot(d, 'NodeColor', 'g');
highlight(h, 1, 'NodeColor', 'r');