0

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

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。我的问题是如何连接这两个节点 具有键 0 值的图

具有键 1 值的图

4

2 回答 2

0

只是不要创建两个图表。在同一个图中添加两个组(或论文)的所有作者之间的边。这将确保如果同一作者是多篇论文的一部分,则网络将被连接。如果两篇研究论文的作者完全不同,那么它将产生不连贯的图。

尝试以下操作:

  • 图中的每个节点都应该代表一个作者(无论他/她属于哪个组(或研究论文类别)。
  • 作者之间的边缘可以代表他们所基于的组(或研究论文)。
于 2018-12-05T11:35:49.807 回答
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)
于 2019-01-28T15:32:22.500 回答