数据来源于天池赛题:零基础入门数据分析-学术前沿趋势分析
地址:https://tianchi.aliyun.com/competition/entrance/531866/information

一、原理介绍

社交网络分析是图关系挖掘的一个分支,通常以关系图的形式来展示人与人之间的关系网络。在人物关系图中,一个节点代表一个人,节点之间的连线表示这些人之间存在关系。网络的节点越多,说明该社交网络越庞大;连线越多,说明联系越密切。同时,也可以使用连线的粗细来表示社交关系的权重,即关系的亲密程度。

这里通过绘制关系图,来研究论文中的作者关系。

二、代码实现

# 导入所需的package
import seaborn as sns #用于画图
from bs4 import BeautifulSoup #用于爬取arxiv的数据
import re #用于正则表达式,匹配字符串的模式
import requests #用于网络连接,发送网络请求,使用域名获取对应信息
import json #读取数据,我们的数据为json格式的
import pandas as pd #数据处理,数据分析
import matplotlib.pyplot as plt #画图工具
import warnings
warnings.filterwarnings("ignore") #过滤掉警告的意思
#读入数据
def readArxivFile(path, columns=['id', 'submitter', 'authors', 'title', 'comments', 'journal-ref', 'doi','report-no', 'categories', 'license', 'abstract', 'versions','update_date', 'authors_parsed'], count=None):'''定义读取文件的函数path: 文件路径columns: 需要选择的列count: 读取行数'''data  = []with open(path, 'r') as f: for idx, line in enumerate(f): if idx == count:breakd = json.loads(line)d = {col : d[col] for col in columns}data.append(d)data = pd.DataFrame(data)return datadata = readArxivFile('F:/data/arxiv-metadata-oai-2019.json', ['id', 'authors_parsed'],200000)
import networkx as nx
# 创建无向图
G = nx.Graph()#这里选择前15篇论文构建作者关系图
for row in data.iloc[:15].itertuples():authors = row[2]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)

从上图中可以看出,关系图的中间网状部分节点最多,说明这个子社交网络中合作的人数最多,我们将其称为最大联通子图。为了得到更加完整的作者关系,接下来选择最大联通子图进行绘制,折线图为子图节点度值。

degree_sequence = sorted([d for n, d in G.degree()], reverse=True)
dmax = max(degree_sequence)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()

社交网络分析之关系图(原理+Python代码)相关推荐

  1. 数据可视化之饼状图(原理+Python代码)

    数据来源于Kaggle数据集,链接:https://www.kaggle.com/Cornell-University/arxiv 目录 00.前言 一.原理介绍 二.代码实现 三.结果解释 00.前 ...

  2. 两维天线阵列波束成型原理Python代码

    在讲解两维天线阵列之前,需要了解一维天线阵列波束成形原理,只有了解了一维天线阵列,才能弄明白二维,好了,我们先开始科普一维天线阵列原理. 一维天线阵列原理: 如下图,所示,如果在theda确定的情况下 ...

  3. 基于模糊C均值聚类(FCM)的图像分割原理+python代码详解

    一.模糊 "模糊":一个元素可以不同程度的属于某几个子集,也就是说元素对于集合的隶属度可以在[0,1]上取连续值. 二.步骤 2.1步骤 翻译一下: S1:初始化参数:加权指数m, ...

  4. echart关系树状图_干货 | 25个常用Matplotlib图的Python代码

    50个Matplotlib图的汇编,在数据分析和可视化中最有用.此列表允许您使用Python的Matplotlib和Seaborn库选择要显示的可视化对象. 1.关联 散点图 带边界的气泡图 带线性回 ...

  5. 数据可视化之小提琴图(原理+Python代码)

    数据来源于天池赛题:零基础入门数据挖掘 - 二手车交易价格预测 地址:https://tianchi.aliyun.com/competition/entrance/231784/introducti ...

  6. python做社会网络分析_社交网络分析(Social Network Analysis in Python)①

    今天的网络是我们日常生活的一部分. 让我们学习如何使用网络在Python中可视化和理解社交网络 网络无处不在,道路网络,社交媒体上的朋友和关注者网络以及办公室同事网络. 他们在日常生活中发挥着重要作用 ...

  7. 25个常用Matplotlib图的Python代码,收藏收藏!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 大家好,小白今天分享给大家25个Matplotlib图的汇总,在数 ...

  8. 论文画图工具:25个常用Matplotlib图的Python代码总结

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨zsx_yiyiyi 来源丨python大本营 编辑丨极市平台 ...

  9. 算法-聚类-K均值与模糊K均值:原理+python代码

    这篇文章是根据作业修改后得到的,个人感觉写的比较详细了.但还有许多不足,希望大家评论指出. K均值聚类与模糊K均值 1. 算法原理及流程 相关名词解释如表1. 表1-相关名词解释 1.1 K均值算法原 ...

  10. python画棒棒糖程序_论文画图神器!25个常用Matplotlib图的Python代码,收藏收藏!...

    作者:zsx_yiyiyi 编辑:python大本营 大家好,今天要分享给大家25个Matplotlib图的汇总,在数据分析和可视化中非常有用,文章较长,可以马起来慢慢练手. # !pip insta ...

最新文章

  1. IDEA中PlantUML的使用
  2. mysql下count(*)和count(1)的区别
  3. lstm数学推导_手推公式:LSTM单元梯度的详细的数学推导
  4. 还记得当年你是如何接触Python的吗?
  5. arry-718 Maximum Length of Repeated Subarray
  6. 容器编排技术 -- Kubernetes入门概述
  7. 偶然搜索看到的杂谈——什麼東西是.NET程序員可以掌握並且可倚仗十年而不管微軟存在與否的技術呢?...
  8. lua和unity如何交互_(XLua)C#与Lua中的交互
  9. 蒙提霍尔问题(三门问题,概率论)C语言验证
  10. YII学习笔记-登录后的session的总结
  11. 西门子,欧姆龙,施耐德PLC通信电缆制作图
  12. 【论文】 各高校的毕业论文的Latex模板链接
  13. creo怎么返回上一步_creo拔模怎么用?creo拔模操作技巧图文详解
  14. 《统计学》笔记:第2章 数据的搜集
  15. JVM 面试 4 连炮,你能顶住么?
  16. QQ互联开发者认证一直审核未通过的原因
  17. 高仿美团iOS版,版本号5.7
  18. 无代码开发平台 有哪些?
  19. Mybatis中Collection集合标签的使用
  20. 私钥,公钥的区分——私钥公钥讲解

热门文章

  1. matlab应力比法,一种考虑隧道围岩应力分布的强度应力比岩爆判据方法与流程
  2. 交换机、路由器 以及 路由器工作模式:桥接模式、路由模式、中继模式
  3. opencv安装教程
  4. 新手小白如何做自媒体自媒体入门视频教程(3G教程)
  5. iphone 与 PC端电脑投屏设置
  6. 虚拟机安装win10教程
  7. 计算机网络知识之交换机、路由器、网关、MAC地址
  8. Java垃圾回收的工作原理和最佳做法
  9. 3d打印英语文献_3D打印模型在腹腔镜肝胆微创手术术前培训中的应用
  10. centos 7.6上面安装向日葵远程连接软件