您的位置:首页 > 其它

基于规则嵌入的论文比对系统——创新实训记录6

2020-07-13 06:11 351 查看

6-17 不同年份上论文集合数据的可视化
  展示论文集合上的一些统计信息,比如,展示数据集中不同年份上论文集的个数,以及平均引用量、被引用量。

创新实训记录6

  • 不同年份上论文集的平均引用量、被引用量(柱状图)
  • 不同年份上论文的引用量、被引用量(盒须图)
  • 不同年份上论文集的个数(柱状图)

    数据预处理

    读取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()

    数据可视化

    # 数据可视化:不同年份的论文数量
    from pyecharts.charts import Bar
    from pyecharts import options as opts
    
    # 构造x,y轴的数据
    x_data = []
    y_data = []
    for k in sorted(years_dic):
    x_data.append(k)
    y_data.append(years_dic[k])
    
    year_bar = Bar(init_opts=opts.InitOpts(width='1200px'))\
    .add_xaxis(xaxis_data = x_data)\
    .add_yaxis(series_name="论文数量",y_axis = y_data)
    year_bar.set_global_opts(title_opts=opts.TitleOpts(title='数据集中不同年份的论文数量'),
    visualmap_opts=opts.VisualMapOpts(
    is_show = True,
    type_ ='color',
    is_piecewise = True,
    pieces=[
    {"min": 3000,"color":'#F01C06'},
    {"min":2000, "max":2999,"color":'#F93F2B'},
    {"min":1000,"max":1999,"color":'#FB8275'},
    {"min":1000,"max":1999,"color":'#FAA62A'},
    {"min":500,"max":999,"color":'#F4E362'},
    {"min":100,"max":499,"color":'#45F172'},
    {"min":50,"max":99,"color":'#7FC3F1'},
    {"max":49,"color":'#C4E3F8'}
    ],
    orient = 'vertical'
    ))
    #year_bar.render_notebook()#显示图表

    可视化效果如下,从下图我们可以看出,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数据集中论文的平均引用量普遍高于被引用量。
      
      

    不同年份上论文的引用量、被引用量(盒须图)

    数据预处理

    # 数据预处理:获取每篇论文的引用量
    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')
    paper_dic = { }
    # 论文索引
    index = 0
    
    for line in fyears:
    year = line.strip()
    if year in paper_dic.keys() and year is not '':
    paper_dic[year].append(outnum[index])
    elif year is not '':
    temp = { }
    new_list = []
    new_list.append(outnum[index])
    temp[year] = new_list
    paper_dic.update(temp)
    else:
    index+=1
    continue
    index +=1
    
    del paper_dic['994']
    print(paper_dic['1999'][:50])
    
    fyears.close()
    
    # 构造x,y轴的数据
    x_data = []
    y_data = []
    for k in sorted(paper_dic):
    x_data.append(k)
    y_data.append(paper_dic[k])
    
    

    数据可视化

    可视化效果如下图。
      用户可以拖动下方的条块选择不同的年份范围,以查看详细信息。从图中我们可以看出不同年份论文最大引用量一般都很高,所以上面统计的平均数据可能受极端数据影响比较大。

      被引用量同理。
      

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: