6-17 不同年份上论文集合数据的可视化
展示论文集合上的一些统计信息,比如,展示数据集中不同年份上论文集的个数,以及平均引用量、被引用量。
读取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])
可视化效果如下图。
用户可以拖动下方的条块选择不同的年份范围,以查看详细信息。从图中我们可以看出不同年份论文最大引用量一般都很高,所以上面统计的平均数据可能受极端数据影响比较大。
被引用量同理。