Scopus多查询文献EID重叠分析:pascalTriangle矩阵与Venn图实现
Scopus多检索文献集交集统计与韦恩图绘制方案
数据预处理
- 对每个Scopus检索导出的文献结果单独建表,仅需保留文献EID、题名字段,EID是Scopus分配的唯一文献标识,是跨集合匹配的核心依据,不要用题名、DOI匹配,避免空值、格式差异导致匹配误差
- 为每个检索集按对应研究主题命名,方便后续图表标注
- 单集合内先按EID去重,剔除EID为空的无效条目,避免干扰统计结果
基于帕斯卡三角逻辑生成交集矩阵
- 逻辑依据:n个文献集合的非空子集总数为2ⁿ-1,数值刚好对应帕斯卡三角第n行的求和结果,遍历所有子集组合统计共有文献量,即可生成覆盖所有重叠场景的完整交集矩阵,无需手动核对区块数量
- 最简Python实现代码:
import pandas as pd from itertools import combinations from collections import defaultdict # 读取所有检索集数据,存储为字典格式:key为检索集名称,value为该集合的EID去重集合 set_dict = {} # 替换为自身文件路径和对应检索集合名称 set_dict["研究主题1"] = set(pd.read_csv("scopus_search1.csv")["EID"].dropna().astype(str)) set_dict["研究主题2"] = set(pd.read_csv("scopus_search2.csv")["EID"].dropna().astype(str)) set_dict["研究主题3"] = set(pd.read_csv("scopus_search3.csv")["EID"].dropna().astype(str)) set_names = list(set_dict.keys()) set_count = len(set_names) # 遍历所有集合组合,统计各组合的交集文献量 intersect_matrix = defaultdict(int) for subset_size in range(1, set_count+1): for combo in combinations(set_names, subset_size): common_eids = set.intersection(*[set_dict[s] for s in combo]) intersect_matrix[combo] = len(common_eids) # 打印交集统计结果 for combo, num in intersect_matrix.items(): print(f"组合{'&'.join(combo)} 重叠文献量:{num}")
注:如果需要提取具体的重叠文献明细,只需将上述代码中统计长度的逻辑调整为导出common_eids对应的题名字段即可,无需重复在Scopus中检索。
韦恩图绘制
- 2-3个集合场景:直接调用对应绘图库传入EID集合即可生成标准韦恩图,每个区块自动标注对应重叠量,与常规学术论文中使用的韦恩图展示效果一致
参考代码:
from matplotlib_venn import venn2, venn3 import matplotlib.pyplot as plt # 绘制2集合韦恩图 plt.figure(figsize=(6,6)) venn2( subsets=[set_dict["研究主题1"], set_dict["研究主题2"]], set_labels=("研究主题1检索结果", "研究主题2检索结果") ) plt.savefig("2set_venn.png", dpi=300, bbox_inches="tight") # 绘制3集合韦恩图 plt.figure(figsize=(6,6)) venn3( subsets=[set_dict["研究主题1"], set_dict["研究主题2"], set_dict["研究主题3"]], set_labels=("研究主题1检索结果", "研究主题2检索结果", "研究主题3检索结果") ) plt.savefig("3set_venn.png", dpi=300, bbox_inches="tight")
- 4个及以上集合场景:换用支持多集合的韦恩图库,传入前一步生成的交集矩阵数值即可生成对应图表,无需手动调整区块布局。
注意事项
- 从Scopus导出文献时,必须勾选EID字段,所有检索集的导出字段保持一致
- 单集合内的重复文献一定要提前去重,否则会导致交集统计值偏大
- 若需做后续的文献计量分析,可在匹配完交集后,给所有文献打所属集合标签,方便后续分组统计。
内容的提问来源于stack exchange,提问作者Shahin
相关产品推荐
相关产品推荐

