Dibujar un color diferente para los nodos en networkx en función de su valor de nodo


Tengo un gran gráfico de nodos y bordes dirigidos. Además, tengo una lista adicional de valores asignados a cada nodo.

Ahora quiero cambiar el color de cada nodo de acuerdo con su valor de nodo. Por ejemplo, dibujar nodos con un valor rojo muy alto y aquellos con un valor azul bajo (similar a un mapa de calor). ¿Es esto de alguna manera fácilmente posible de lograr? Si no es con networkx, también estoy abierto para otras bibliotecas en Python.

Author: fsociety, 2012-11-22

1 answers

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()

Rinde

introduzca la descripción de la imagen aquí


Los números en values están asociados con los nodos G.nodes(). Es decir, el primer número en values está asociado con el primer nodo en G.nodes(), y de manera similar para el segundo, y así sucesivamente.

 45
Author: unutbu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-18 01:36:38