Разбить граф на солнечные диаграммы на основе атрибута узла NetworkX

Я использую Networkx для вычисления некоторых показателей графа, таких как диаметр, коэффициент кластеризации и т. Д. Это просто, как сделать это для графа в целом. Что меня интересует, так это нахождение этих мер между узлами, имеющими один и тот же атрибут (скажем, цвет). Я думаю, что если бы я мог разбить график на разные подграфы, где узлы в каждом подграфе имеют один и тот же цвет, то я мог бы сделать это и измерить диаметр в этом подграфе. Итак, мой вопрос: есть ли способ разбить граф на подграфы, которые содержат узлы одного цвета?

Я был бы очень признателен за понимание.

1 ответ

Решение

Перебрать (Graph.iter_nodes()) и фильтруйте узлы на основе ваших критериев. Передать этот список Graph.subgraph() и он вернет копию этих узлов и их внутренних ребер.

Например:

G = nx.Graph()
# ... build or do whatever to the graph
nodes = filter(lambda (n, d): d['color'] == 'red', G.nodes_iter(data=True))
subgraph = G.subgraph(nodes)
Другие вопросы по тегам