读取years.txt,将年份对应的总论文数放入一个字典。
# 读取years.txt,将年份对应的论文数放入一个字典 file_years = 'D:/大学资料/大三下/项目实训/code+data/ACM数据集/years.txt' fyears = open(file_years,'r') years_dic = { } for line in fyears: year = line.strip() if year in years_dic.keys() and year is not '': years_dic[year]+=1 elif year is not '': temp = {} temp[year] = 1 years_dic.update(temp) else: continue del years_dic['994'] print(years_dic) print(len(years_dic)) fyears.close()可视化效果如下,从下图我们可以看出,ACM数据集中的论文大部分是2000年~2008年的。
首先,获取每篇论文的引用量。
# 数据预处理:获取每篇论文的引用量 olinkspath = 'D:/大学资料/大三下/项目实训/code+data/ACM数据集/outlinks.txt' ofile = open(olinkspath,'r') outnum = [] for line in ofile: lines = line.strip('\n').split() num = len(lines) outnum.append(num) print(outnum[:6]) ofile.close()然后,获取不同年份论文的总引用量。
# 数据预处理:获取不同年份论文的总引用量 file_years = 'D:/大学资料/大三下/项目实训/code+data/ACM数据集/years.txt' fyears = open(file_years,'r') num_dic = { } # 论文索引 index = 0 for line in fyears: year = line.strip() if year in num_dic.keys() and year is not '': num_dic[year]+=outnum[index] elif year is not '': temp = {} temp[year] = outnum[index] num_dic.update(temp) else: index+=1 continue index +=1 del num_dic['994'] print(num_dic) print(len(num_dic)) fyears.close()最后,获取不同年份论文的平均引用量。并进行可视化看看效果。
# 数据可视化:不同年份论文的平均引用量 from pyecharts.charts import Bar from pyecharts import options as opts # 构造x,y轴的数据 x_data1 = [] y_data1 = [] for k in sorted(avg_dic): x_data1.append(k) y_data1.append(avg_dic[k]) avg_bar = Bar(init_opts=opts.InitOpts(width='1200px'))\ .add_xaxis(xaxis_data = x_data1)\ .add_yaxis(series_name="论文数量",y_axis = y_data1) avg_bar.set_global_opts(title_opts=opts.TitleOpts(title='不同年份论文的平均引用量'), visualmap_opts=opts.VisualMapOpts( is_show = True, type_ ='color', is_piecewise = True, pieces=[ {"min": 5,"color":'#FE6E6E'}, {"min":4, "max":5,"color":'#F29CE6'}, {"min":3, "max":4,"color":'#FCEB88'}, {"min":2,"max":3,"color":'#A4FB81'}, {"max":2,"color":'#C4E3F8'} ], orient = 'vertical' ))从下图我们可以看出,不同年份的论文集合他们的平均引用量集中在2~4。 被引用量的处理方法相同。 将平均引用量、被引用量结合在一起进行可视化:
# 数据可视化:不同年份论文的平均引用量 from pyecharts.charts import Bar from pyecharts import options as opts # 构造x,y轴的数据 x_data2 = [] y_data2 = [] for k in sorted(inavg_dic): x_data2.append(k) y_data2.append(inavg_dic[k]) inavg_bar = Bar(init_opts=opts.InitOpts(width='1200px'))\ .add_xaxis(xaxis_data = x_data2)\ .add_yaxis(series_name="平均被引用量",y_axis = y_data2)\ .add_yaxis(series_name="平均引用量",y_axis = y_data1) inavg_bar.set_global_opts(title_opts=opts.TitleOpts(title='不同年份论文的平均被引用量与引用量'), datazoom_opts=opts.DataZoomOpts(is_show= True, orient="horizontal")) inavg_bar.render()#显示图表用户可以拖动下方的条块选择不同的年份范围,以查看详细信息。从下图我们可以看出,ACM数据集中论文的平均引用量普遍高于被引用量。
可视化效果如下图。 用户可以拖动下方的条块选择不同的年份范围,以查看详细信息。从图中我们可以看出不同年份论文最大引用量一般都很高,所以上面统计的平均数据可能受极端数据影响比较大。 被引用量同理。 上述内容详见:
https://blog.csdn.net/WX1204/article/details/106818036