Подтвердить что ты не робот

Нарисуйте другой цвет для узлов в сетиx на основе их значения node

У меня есть большой граф узлов и направленных ребер. Кроме того, у меня есть дополнительный список значений, назначенных каждому node.

Теперь я хочу изменить цвет каждого node в соответствии со своим значением node. Так, например, чертежные узлы с очень высоким значением красного цвета и с голубым значением с низким значением (аналогично тепловой карте). Можно ли так легко достичь этого? Если не с networkx, я также открыт для других библиотек в Python.

4b9b3361

Ответ 1

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('viridis'), node_color=values, with_labels=True, font_color='white')
plt.show()

урожайность enter image description here


Числа в values связаны с узлами в G.nodes(). То есть первое число в values связано с первым узлом в G.nodes(), и аналогично для второго, и так далее.