highlight Nodecolor for a graph using a color map (JET)

7 vues (au cours des 30 derniers jours)
Sha
Sha le 30 Sep 2020
Commenté : Sha le 1 Oct 2020
Hi,
I have plotted a graph with n nodes.
Each node has an "attribute" or a value from -1 to 1 stored in a vector K.
I would like to color the nodes using these attributes so for example if node 1 has attribute value "-1" then with the "JET" colormap on Matlab it would appear in Blue.
Is there a way to achieve this ?
I tried the following but clearly it doesn't work (returns error, it's wrong):
jetcustom=jet(n);
r1=K(1,:); %list of attributes
colors = interp1(linspace(-1, 1, n), jetcustom, r1.');
figure()
a=graph(A);
p=plot(a,'Layout','force');
for i=1:n
highlight(p,i , 'NodeColor', colors(i));
end

Réponse acceptée

Christine Tobler
Christine Tobler le 30 Sep 2020
Since colors is a n-by-3 array, use colors(i, :) to access the complete row that represents the color for node i. You can also use
p=plot(a,'Layout','force','NodeColor',colors)
instead of the for-loop with highlight, or you could try to have MATLAB's colormap work in the background without explicitly setting the colors:
p=plot(a,'Layout','force','NodeCData',r1);
colorbar
colormap jet

Plus de réponses (0)

Catégories

En savoir plus sur Colormaps dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by