визуализировать переход между узлами в нескольких графах в networkx - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь понять, как сообщества из коллекции графиков, которые у меня есть, представляют разные возрастные переходы. со временем. У меня около 14 графов (сети возрастов):

На мой взгляд, это был неориентированный multi_graph, поскольку каждый узел мог иметь несколько ребер. Однако, когда я создаю большую сеть, я просто генерирую огромный несвязанный суперграф. Это нормально, однако мне также нужно создать график, который показывает переход между узлами от одного возраста (графа) к другому. Есть некоторые узлы, которые сохраняются между разными возрастами, но представляют собой некоторые изменения с течением времени .. т.е. соединение между двумя узлами может меняться со временем .. Код выглядит следующим образом:

n12 = nx.relabel_nodes(networkGraph12, lambda nodename: ('age1')+nodename, copy=False)
n13 =nx.relabel_nodes(networkGraph13, lambda nodename: ('age2')+nodename, copy=False)

время 14 возрастов (14 графиков) для поддержания всех узлов в каждом графике, поскольку некоторые узлы идентичны предыдущим возрастам (это ожидается, поскольку это геномные c данные, а узлы представляют гены)

networkList = [n12, n13, n14 et c x 14 графиков] ## сгенерировать список графиков:

allAgesgraph=nx.MultiGraph()
for graph in networkList:
    print('adding nodes from' + str(graph))
    allAgesgraph.add_nodes_from(graph)
    print('adding edges from' +str(graph))
    allAgesgraph.add_edges_from(graph.edges())

import community
comms=community.best_partition(allAgesgraph)

#add different colors to nodes
node_col=[]

for node in allAgesgraph.nodes():
    if node.startswith('age1'):
        node_col.append('green')
    elif node.startswith('age2'):
        node_col.append('orange')
    elif node.startswith('age3'):
etc *14
    else node.startswith('lastage')
        node_col.append('red)



#plot based on communities of gene-expression
plt.rcParams.update(plt.rcParamsDefault)
plt.rcParams.update({'figure.figsize': (15, 10)})
plt.style.use('dark_background')

#fig,ax=plt.subplots()
#ax.set_facecolor("white")
pos=nx.fruchterman_reingold_layout(allAgesgraph, seed=50)

nx.draw_networkx(
    allAgesgraph,
    node_color=node_col,
    pos=pos,
    node_size=2,
    edge_color='silver',
    alpha=0.4,
    font_color='white',
    font_size=8,
    with_labels=False)
plt.show()

В результате получается несвязный граф с 620 сообществами. Все это неверно, но сообщества и ребра формируются ТОЛЬКО между отдельными графами, фактически создавая один огромный несвязный граф. Я не вижу краевых соединений между переходами узлов от age1-age2.

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

спасибо!

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