Связь между одинаковыми узлами разных графов в питоне - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу создать график между авторами разных исследовательских работ.Я могу создать график между всеми авторами одной и той же статьи.Но я не могу связать его с другим графиком.

import networkx as nx
import matplotlib.pyplot as plt
authors= {0:{'a1':'Brian Vickery',
             'a2':'Fatma Özcan',
              'a3':'George Lapis',
              'a4':'Guy M. Lohman',
              'a5':'Hamid Pirahesh',
              'a6':'Jim Kleewein',
              'a7':'Kevin S. Beyer',
              'a8':'Normen Seemann',
              'a9':'Robert Lyle',
              'a10':'Roberta Cochrane',
              'a11':'Tuong C. Truong',
              'a12':'Vanja Josifovski'},
          1:{ 'a1':'Robert Lyle',
              'a2':'Bingsheng He',
              'a3':'Mian Lu',
              'a4':'Ke Yang',
              'a5':'Naga K. Govindaraju',
              'a6':'Qiong Luo',
              'a7':'Pedro V. Sander'}}

Я разделяю значения ключа 0 и создаю на нем график, аналогично отделяя значение ключа 1, я могу создать график на его значениях.Но я не могу соединить узлы обоих графов

keys = list(authors .keys())

tups = list(zip(keys, keys[1:]+keys[0:1]))
g = nx.Graph()
for a,b in tups:
    g.add_edge(authors[a], authors[b])

nx.draw(g)
plt.draw()
plt.show()

Следующие оба графа имеют имя узла как Роберт Лайл.Мой вопрос заключается в том, как я могу соединить оба этих узла graph having values of key 0

graph having values of key 1

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Обычно каждый автор связан с другими на бумаге:

import itertools
import networkx as nx

authorlist = [list(paperauthors.values()) for papername, paperauthors in author.items()]

g = nx.Graph()
edgelist = [a1, a2 for paperauthors in authorlist for a1, a2 in itertools.combinations(paperauthors, 2)]
g.add_edges_from(edgelist)
0 голосов
/ 05 декабря 2018

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

Попробуйте следующее:

  • Каждый узел в графе должен представлять автора (независимо от того, какая группа (или категория исследовательской работы) к которой он / она принадлежит.
  • Края между авторами могут представлять группу (или исследовательскую работу), на основе которой они связаны.
...