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

6-18 不同年份论文集上的数据可视化补充+不同会议论文集上的一点数据可视化

不同年份论文集上的数据可视化补充

昨天是统计了每一个年份对应的论文总数,现在想要统计一个年份区间内的论文数,以饼状图的形式展示数据,可以更为直观地看到数据之间的比例关系。
  我们就以10年为一个区间,通过前期观察发现ACM数据集中1950年之前的论文非常少,所以将1900-1949单独归为一个年份区间。

# 可视化:不同年份区间的论文数量(饼状图),10年为一个时间段
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import ThemeType

# 年份区间    
use_y = ['1900-1949','1950-1959',
           '1960-1969','1970-1979',
           '1980-1989','1990-1999',
           '2000-2009','2010-2020']

#年分区间对应的论文数
use_x = [0,0,0,0,0,0,0,0]

for k in sorted(years_dic):
    if 1900<int(k)<1950:
        use_x[0] += years_dic[k]
    elif 1949<int(k)<1960:
        use_x[1] += years_dic[k]
    elif 1959<int(k)<1970:
        use_x[2] += years_dic[k]
    elif 1959<int(k)<1970:
        use_x[2] += years_dic[k]
    elif 1969<int(k)<1980:
        use_x[3] += years_dic[k]
    elif 1979<int(k)<1990:
        use_x[4] += years_dic[k]
    elif 1989<int(k)<2000:
        use_x[5] += years_dic[k]
    elif 1999<int(k)<2010:
        use_x[6] += years_dic[k]
    else:
        use_x[7] += years_dic[k]

print(use_x)

#绘制饼图
year_pie=Pie()\
    .add("年分区间", [list(z) for z in zip(use_y, use_x)],
        label_opts=opts.LabelOpts(is_show=True),
        center=["40%", "40%"],
        radius=[40, 120])\
    .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple","grey"])\
    .set_global_opts(title_opts=opts.TitleOpts(
                               title="不同年份区间的论文数量",),
                    legend_opts=opts.LegendOpts(is_show=False))\
    .set_series_opts(tooltip_opts=opts.TooltipOpts(
             formatter="{a} <br/>{b}: {c} ({d}%)"
        ))
year_pie.render_notebook()

通过下图可以发现,我们的论文数据主要来源于2000-2009年,占了总数据的70.89%,其次是1990-1999年之间的论文,占了总量的1/5左右。
  在这里插入图片描述

不同会议论文集上的一点数据可视化

思路:先统计每个会议对应的论文总数,然后进行筛选,只保留总数比较大的(比如大于50)进行数据展示。展示来自不同会议的论文数(饼状图)。

数据预处理

爬完数据之后没有进行进一步的处理,今天打开venues.txt后发现有很多格式不对的数据,如:
  在这里插入图片描述
  在这里插入图片描述
  应该是因为有一些会议或者期刊名字比较长,在被爬取的网页上只展示了部分信息,后面就用省略号或者别的符号代替了。所以我们需要先对venue进行字符串处理,去除掉奇怪的符号。只保留字母、数字和一些正常的标点符号。

# 对venues.txt进行进一步处理
import re

file_venues = 'D:/大学资料/大三下/项目实训/code+data/ACM数据集/venues.txt'
fvenues = open(file_venues,'r')

file_new = 'D:/大学资料/大三下/项目实训/code+data/ACM数据集/newvenues.txt'
fnew = open(file_new,'w')

for line in fvenues:
    venue = line.strip()
    result =re.sub(r'[^A-Za-z\,\.\&\(\)\0-9\:]','', venue)+'\n'
    fnew.write(result)

fvenues.close()
fnew.close()

print('数据写入完毕')

读取venues.txt,将不同会议对应的论文数放入一个字典。

# 读取venues.txt,将不同会议对应的论文数放入一个字典
import json

file_venues = 'D:/大学资料/大三下/项目实训/code+data/ACM数据集/venues.txt'
fvenues = open(file_venues,'r')
venues_dic = { }
for line in fvenues:
    venue = line.strip()
    if venue in venues_dic.keys() and venue is not '':
        venues_dic[venue]+=1
    elif venue is not '':
        temp = {}
        temp[venue] = 1
        venues_dic.update(temp)
    else:
        continue
print(len(venues_dic))
print(venues_dic)

fvenues.close()

在这里插入图片描述
  将venues_dic写入json以方便查看数据。

venue_count = 'D:/大学资料/大三下/项目实训/code+data/ACM数据集/venue_count.json'
fcount = open(venue_count, 'w')

for k,v in  venues_dic.items():
    temp = {}
    temp[k]=v
    json.dump(temp, fcount)
    fcount.write('\n')
        
fcount.close()

Json文件的形式:
  在这里插入图片描述
  在进行数据筛选前,我们看到论文的会议/期刊数有3024个,可见我们的数据来源具有多样性的特点。
  对数据进行筛选,选出论文总数大于50的会议。

# 保留原始的字典,新建一个符合条件的会议字典
use_dic = {}
for k in venues_dic:
    if venues_dic[k]>50:
        temp = {}
        temp[k]=venues_dic[k]
        use_dic.update(temp)

print(len(use_dic))
print(use_dic)

可视化

# 数据可视化,绘制饼状图

# 构造x,y数据
x_data = []
y_data = []
for k,v in use_dic.items():
    x_data.append(k)
    y_data.append(v)
print(y_data)

from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import ThemeType

#绘制饼图
venue_pie=Pie()\
    .add("会议/期刊", [list(z) for z in zip(x_data, y_data)],
        label_opts=opts.LabelOpts(is_show=False),
        radius=[40, 120])\
    .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple","grey"])\
    .set_global_opts(title_opts=opts.TitleOpts(
                               title="不同会议/期刊(论文总数大于50)的论文数量分布",),
                    legend_opts=opts.LegendOpts(is_show=False))\
    .set_series_opts(tooltip_opts=opts.TooltipOpts(
             formatter="{a} <br/>{b}: {c} ({d}%)"
        ),)
venue_pie.render_notebook()

从下图可以看到,我们的论文来自非常多不同的会议、期刊,其中包含论文比较多的会议、期刊有human fators in computing systems、Communications of The ACM、international conference on management of data、Journal of the ACM等。
  在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值