Разбить граф на солнечные диаграммы на основе атрибута узла 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)