作者信息关联度

该博客通过Python的NetworkX库分析Arxiv论文的作者关系。首先,从`arxiv-metadata-oai-2019.json`文件中读取数据,然后创建一个无向图,并选取前五篇论文的作者建立连接。接着,尝试查找特定作者间的最短路径,并计算图的连通性。最后,绘制了度排名图以及网络图的子图。虽然在尝试显示最短路径时未找到路径,但展示了如何利用NetworkX进行复杂网络分析。
摘要由CSDN通过智能技术生成
# packages is all you need
import seaborn as sns
from bs4 import BeautifulSoup
import re
import requests 
import json
import pandas as pd
import matplotlib.pyplot as plt
data  = [] #初始化
#使用with语句优势:1.自动关闭文件句柄;2.自动显示(处理)文件读取数据异常
with open("arxiv-metadata-oai-2019.json", 'r') as f: 
    for idx, line in enumerate(f): 
        d = json.loads(line)
        d = {'authors_parsed': d['authors_parsed']}
        data.append(d)
        
data = pd.DataFrame(data) #将list变为dataframe格式,方便使用pandas进行分析
import networkx as nx 
# 创建无向图
G = nx.Graph()

# 只用五篇论文进行构建
for row in data.iloc[:5].itertuples():
    authors = row[1]
    authors = [' '.join(x[:-1]) for x in authors]
    
    # 第一个作者 与 其他作者链接
    for author in authors[1:]:
        G.add_edge(authors[0],author) # 添加节点2,3并链接23节点
nx.draw(G, with_labels=True)

在这里插入图片描述

try:
    print(nx.dijkstra_path(G, 'Balázs C.', 'Ziambaras Eleni'))
except:
    print('No path')
No path
# 计算论文关系中有多少个联通子图
print(len(nx.communicability(G)))

plt.loglog(degree_sequence, "b-", marker="o")
plt.title("Degree rank plot")
plt.ylabel("degree")
plt.xlabel("rank")

# draw graph in inset
plt.axes([0.45, 0.45, 0.45, 0.45])
Gcc = G.subgraph(sorted(nx.connected_components(G), key=len, reverse=True)[0])

pos = nx.spring_layout(Gcc)
plt.axis("off")
nx.draw_networkx_nodes(Gcc, pos, node_size=20)
nx.draw_networkx_edges(Gcc, pos, alpha=0.4)
plt.show()

13



---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

<ipython-input-9-c995b59f30bf> in <module>
      2 print(len(nx.communicability(G)))
      3 
----> 4 plt.loglog(degree_sequence, "b-", marker="o")
      5 plt.title("Degree rank plot")
      6 plt.ylabel("degree")


NameError: name 'degree_sequence' is not defined

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值