Раскрашивание узлов в соответствии с атрибутом в osmnx - PullRequest
1 голос
/ 09 июля 2020

Я пытался раскрасить узлы своей сети в соответствии с заданным атрибутом c, но функция ox.plot.get_node_colors_by_attr() не работает.

Ошибка: ValueError: There are no attribute values.

Вот код:

import networkx as nx
import numpy as np
import osmnx as ox
ox.config(use_cache=True, log_console=True)

city = 'Portugal, Lisbon'
G = ox.graph_from_place(city, network_type='drive', simplify=True)

G_nx = nx.relabel.convert_node_labels_to_integers(G)
nodes, edges = ox.graph_to_gdfs(G_nx, nodes=True, edges=True)

r_total = np.random.random(len(G_nx))
nodes['r'] = nodes.index.map(lambda x: r_total[x])
nodes.head()
nc = ox.plot.get_node_colors_by_attr(G_nx, attr='r')

1 Ответ

1 голос
/ 09 июля 2020

Если вы замените строки

nodes['r'] = nodes.index.map(lambda x: r_total[x])
nodes.head()

на

nx.set_node_attributes(G_nx, {x:r_total[x] for x in nodes.index}, name='r')

, ваш код должен работать (документация set_node_attributes) - даже если я не Я понимаю, почему вы присваиваете случайные значения таким сложным образом, но я думаю, это только для того, чтобы иметь минимальный воспроизводимый пример.

...