График Networkx вне матрицы сходства в python - PullRequest
0 голосов
/ 03 марта 2020

Я пробую библиотеку networkx в первый раз, пытаясь построить график с использованием созданной мной матрицы различий, содержащей около 500 элементов,

array([[0.        , 0.56666667, 0.41666667, ..., 0.8037037 , 0.89814815,
        0.86296296],
       [0.56666667, 0.        , 0.35833333, ..., 0.73703704, 0.91481481,
        0.87037037],
       [0.41666667, 0.35833333, 0.        , ..., 0.8037037 , 0.98148148,
        0.86296296],
       ...,
       [0.8037037 , 0.73703704, 0.8037037 , ..., 0.        , 0.67777778,
        0.85740741],
       [0.89814815, 0.91481481, 0.98148148, ..., 0.67777778, 0.        ,
        0.78518519],
       [0.86296296, 0.87037037, 0.86296296, ..., 0.85740741, 0.78518519,
        0.        ]])

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

я пытался

import networkx as nx


G = nx.from_numpy_matrix(dismatrix)
G = nx.relabel_nodes(G, dict(zip(range(len(G.nodes())),string.ascii_uppercase)))  
nx.draw(G, with_labels=True, font_weight='bold')

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

график построен

1 Ответ

0 голосов
/ 04 марта 2020

У вас есть несколько вариантов. Сначала вы можете применить алгоритм обнаружения сообщества, который использует ваши граничные веса (различия), чтобы найти группы похожих узлов. Эти метки могут быть использованы для окрашивания ваших узлов.

Во-вторых, вы можете просто обрезать края, используя порог - например, сохранить только те края, где сходство> = 0,75.

В любом случае вам нужно посмотреть, какой макет networkx вы используете на своих графиках. К ним относятся: пружинная, спектральная, направленная сила , Circular et c. Если у вас есть свой график, может быть проще создать «красивую» визуальную программу для построения графиков, такую ​​как Gephi.

...