【毕业设计】基于python 爬虫 flask的疫情数据可视化系统

%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/.md
1 课题背景
自2019年12月12日武汉确诊新型冠状病毒患者开始,历时三年之久的新冠疫情仍未结束 。新型冠状病毒肺炎(COVID-19)存在人畜跨界传播、传染性强、影响因素多样、传播途径复杂等特点,导致肺炎疫情发病急、发展快、溯源分析难、社会危害大等问题 。随着新型冠状病毒毒株的不断变异,现出现了传播性极强、免疫逃逸能力极高的变异病毒 。
为更直观、更专业地了解疫情的变化,本文设计了基于爬虫、、的COVID-19疫情信息可视化系统 。该系统主要包括疫情模型预测、疫情信息可视化以及防疫措施指南三大功能,能够实时动态展示疫情发展趋势,并根据预测模型进行疫情预测以及提供有效的防疫措施 。
2 实现效果 2.1 整体界面展示
整体界面展示如下:
2.2 31省病例柱形图
利用爬虫从百度、丁香网等网站收集了全国31个省份多个城市的确诊病例数量,保存为CSV文件如下图:
柱形图相关代码:
# 近31省市区现有病例def confirmed_of_provive():c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK)).add_xaxis(address).add_yaxis('', xyqz).set_series_opts(markline_opts=opts.MarkLineOpts(data=http://www.kingceram.com/post/[opts.MarkLineItem(type_="max", name="max"), opts.MarkLineItem(type_="min", name="min")]),markpoint_opts=opts.MarkPointOpts(data=http://www.kingceram.com/post/[opts.MarkPointItem(type_="max", name="max"), opts.MarkPointItem(type_="min", name="min")])).set_global_opts(title_opts=opts.TitleOpts(title='近期31省区市本土现有病例', title_textstyle_opts=opts.TextStyleOpts(color='#ffffff'), pos_left='35%', pos_top='5%'),visualmap_opts=opts.VisualMapOpts(textstyle_opts=opts.TextStyleOpts(color='#ffffff'),max_=int(max(xyqz)), min_=int(min(xyqz)), is_piecewise=True, pos_right='5%', pos_top='40%'),xaxis_opts=opts.AxisOpts(name="省市区", axislabel_opts=opts.LabelOpts(rotate=90, color='#ffffff'),axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow")),tooltip_opts=opts.TooltipOpts(trigger='axis', axis_pointer_type='cross'),datazoom_opts=opts.DataZoomOpts(is_show=False, type_='inside', range_start=30),legend_opts=opts.LegendOpts(pos_right='5%', pos_top='5%', textstyle_opts=opts.TextStyleOpts(color='#ffffff')),yaxis_opts=opts.AxisOpts(name="数量",axislabel_opts=opts.LabelOpts(rotate=90, color='#ffffff'), splitline_opts=opts.SplitLineOpts(is_show=True))))return c.dump_options_with_quotes()
2.3 全国现有确诊人数趋势
收取全国现有确诊人数,绘制人数趋势图
相关代码:
def xyqz():# 新增确诊/现有确诊xxx = ['新增确诊', '现有确诊']y = [y, y1]for i in range(len(xxx)):bar = (Line().add_xaxis(x).add_yaxis(xxx[i], y[i], symbol='circle',is_smooth=True,is_symbol_show=True,symbol_size=6,linestyle_opts=opts.LineStyleOpts(width=2),label_opts=opts.LabelOpts(is_show=True, position="top", color="white"),itemstyle_opts=opts.ItemStyleOpts(color="skyblue", border_color="#fff", border_width=2)).set_series_opts(markline_opts=opts.MarkLineOpts(data=http://www.kingceram.com/post/[opts.MarkLineItem(type_="max", name="max"), opts.MarkLineItem(type_="min", name="min")]),markpoint_opts=opts.MarkPointOpts(data=http://www.kingceram.com/post/[opts.MarkPointItem(type_="max", name="max"),opts.MarkPointItem(type_="min", name="min")])).set_global_opts(title_opts=opts.TitleOpts(title='全国' + xxx[i] + '人数趋势',title_textstyle_opts=opts.TextStyleOpts(color='#ffffff')),visualmap_opts=opts.VisualMapOpts(textstyle_opts=opts.TextStyleOpts(color='#ffffff'),max_=int(max(y[i])), is_piecewise=True,pos_right='5%', pos_top='60%'),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45, color='#ffffff')),tooltip_opts=opts.TooltipOpts(trigger='axis', axis_pointer_type='cross'),yaxis_opts=opts.AxisOpts(name="Y", splitline_opts=opts.SplitLineOpts(is_show=True),axislabel_opts=opts.LabelOpts(rotate=90, color='#ffffff')),legend_opts=opts.LegendOpts(pos_left='50%',textstyle_opts=opts.TextStyleOpts(color='#ffffff')),))tl.add(bar, xxx[i])tl.add_schema(is_auto_play=True, pos_bottom='88%', pos_left='25%',label_opts=opts.LabelOpts(color='#ffffff', font_size=12))return tl.dump_options_with_quotes()