Python NetworkX - установить цвет узла автоматически на основе списка значений - PullRequest
2 голосов
/ 05 апреля 2019

Я сгенерировал график с networkx

import netwokx as nx  
s = 5
G = nx.grid_graph(dim=[s,s])
nodes = list(G.nodes)
edges = list(G.edges)
p = []
for i in range(0, s):
    for j in range(0, s):
        p.append([i,j])
for i in range(0, len(nodes)):
    G.node[nodes[i]]['pos'] = p[i]

pos = {}
for i in range(0, len(nodes)):
        pos[nodes[i]] = p[i]

nx.draw(G, pos)

enter image description here

Теперь я хотел бы назначить значение для каждого узла в диапазоне 0и 4

import random
val = []
for i in range(0, len(G.nodes()):
    val.append(randint(0,4)) 

И я хотел бы назначить цвет каждой базе узлов в списке val и построить что-то похожее на показанный здесь

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Чтобы установить свойство узла, вы можете использовать:

nx.set_node_attributes(G, val, 'val')

Сетевые вызовы отрисовки до draw_networkx_nodes , для этого требуется список карт и цветов, поэтому все, что вам нужно будет сделатьбудет что-то вроде:

nx.draw(G, pos, node_color = nx.get_node_attributes(G,'val'), vmin=0, vmax=4, cmap = plt.cm.get_cmap('rainbow'))
0 голосов
/ 05 апреля 2019

networkx.draw имеет параметры node_color, vmin, vmax и cmap :

cmap (карта цветов Matplotlib, необязательная (по умолчанию = нет)) - карта цветов для интенсивности отображенияузлы

vmin, vmax (с плавающей запятой, необязательный (по умолчанию = нет)) - минимальное и максимальное для масштабирования карты цветов узла

node_color (цветная строкаили массив с плавающей точкой, (по умолчанию = '# 1f78b4')) - цвет узла.Может быть одной строкой цветового формата или последовательностью цветов той же длины, что и список узлов.Если указаны числовые значения, они будут отображены в цвета с использованием параметров cmap и vmin, vmax.См. Matplotlib.scatter для более подробной информации.

Вы можете написать в нем список, чтобы ваши узлы были окрашены (например):

colors = [i/len(G.nodes) for i in range(len(G.nodes))]
...
...
nx.draw(G, pos, node_color=colors)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...