Dessinez des couleurs différentes pour les noeuds dans networkx en fonction de leur valeur de noeud

j'ai un grand graphe de nœuds et d'arêtes orientées. En outre, j'ai une liste de valeurs attribuées à chaque nœud.

je veux maintenant changer la couleur de chaque noeud en fonction de sa valeur. Ainsi, par exemple, les noeuds de dessin avec un rouge de très haute valeur et ceux avec un bleu de faible valeur (similaire à une heatmap). Est-ce que cela est facilement réalisable? Si ce n'est pas avec networkx, je suis aussi ouvert pour d'autres bibliothèques en Python.

24
demandé sur fsociety 2012-11-22 21:32:06

1 réponses

import networkx as nx
import numpy as np
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_edges_from(
    [('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'),
     ('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')])

val_map = {'A': 1.0,
           'D': 0.5714285714285714,
           'H': 0.0}

values = [val_map.get(node, 0.25) for node in G.nodes()]

nx.draw(G, cmap=plt.get_cmap('jet'), node_color=values)
plt.show()

les rendements

enter image description here


Les nombres values sont associés avec les nœuds G.nodes(). C'est-à-dire, le premier nombre values est associé au premier noeud de

45
répondu unutbu 2014-11-18 01:36:38