我想在不同研究论文的作者之间创建图形。 我能够在同一篇论文的所有作者之间创建一个图形。但是我无法将其与其他图形连接。
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()
答案 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)