python中不同图的相同节点之间的连接

时间:2018-12-05 09:04:36

标签: python-3.x graph networkx

我想在不同研究论文的作者之间创建图形。 我能够在同一篇论文的所有作者之间创建一个图形。但是我无法将其与其他图形连接。

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()

以下两个图的节点名称均为Robert Lyle。我的问题是如何连接这两个节点 graph having values of key 0

graph having values of key 1

2 个答案:

答案 0 :(得分:0)

请勿创建两个图形。在同一图中,在两个组(或论文)的所有作者之间添加边。这将确保如果同一位作者是多篇论文的一部分,则将连接网络。如果两篇研究论文的作者完全不同,则将产生脱节的图。

尝试以下操作:

  • 图中的每个节点都应代表一个作者(无论 他/她属于哪个组(或研究论文类别)。
  • 作者之间的优势可以代表该小组(或研究论文) 基于它们的连接方式。

答案 1 :(得分:0)

通常,每个作者在纸上彼此联系:

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)