基于Django的国内疫情数据可视化系统
摘要
2020年底以来,新冠病毒在全球范围内迅速蔓延,引起了国际社会的高度关注。在中国,政府和公众采取了积极措施应对疫情,并取得了显著成效。其中,疫情数据的及时收集、分析和传播是重要的信息支撑。
基于Django的国内疫情数据可视化Web系统是一种将数据可视化和交互性相结合的信息展示方式。通过该系统,用户可以方便地获取有关疫情数据的详细信息,包括感染人数、死亡人数、确诊率等,并进行数据分析和对比。同时,该系统还提供了实时数据更新、多样化的图表展示、数据导出等功能,使用户能够更加深入地了解疫情发展趋势,进而制定更加科学的防控措施。
关键词
Django;数据可视化;疫情;python
目录
1.绪论
1.1研究背景
1.2研究目的与意义
2.文献资料综述
3.设计理念
3.1依据的理论知识技术
4. 解决问题的方案
4.1 解决问题的总体方案:
4.2 方案的主要部分说明或技术分析:
4.3 方案可行性分析:
4.4 系统的实现
4.4.1 models的设计
4.4.2 首页的展示
4.4.3 国内累计数据
4.4.4 国内实时数据
4.4.5 各省数据
编辑
4.4.6 中国历史数据
4.5 毕业设计成果评价
结 论
参考文献
致 谢
附录
1.绪论
1.1研究背景
随着全球新冠疫情的爆发,对各国疫情数据的跟踪和分析变得越来越重要。在中国,国家卫健委每日发布疫情数据,并通过多个媒体平台向公众展示。但是,这些平台的数据呈现方式可能不够清晰明了,难以快速准确地掌握疫情动态。
因此,建立一个基于Django的国内疫情数据可视化Web系统具有很高的实用价值。该系统可以将每日更新的疫情数据进行可视化展示,包括地图、趋势图、饼图等多种形式,让公众更加直观地了解疫情发展趋势。同时,该系统还可以为政府部门、医疗机构等提供数据支持,帮助他们更好地制定应对策略。
基于Django框架搭建的Web系统具有易于扩展、易于维护、安全性高等优点,非常适合用于构建这样的数据可视化平台。
1.2研究目的与意义
提高公众对疫情数据的认知和理解。通过直观的数据可视化展示,让公众更加直观地了解疫情发展趋势,从而增强公众的防控意识和自我保护能力。
为政府部门、医疗机构等提供数据支持。通过该系统提供的准确、及时的疫情数据,这些机构可以更好地制定应对策略,帮助疫情防控工作更加科学、高效。
探索基于Django框架的Web系统设计与实现方法。在项目中使用Django框架搭建Web系统,可以更加快速、高效地完成系统开发和维护,并具有良好的扩展性和安全性。
推动数据可视化技术的发展和应用。数据可视化技术以其直观、易懂的特点受到越来越多人的关注,通过本系统的研究与应用,可以推动数据可视化技术在疫情防控等领域的应用,进一步提高数据可视化技术的应用水平。
2.文献资料综述
在国内外已经有不少关于疫情数据可视化的相关研究,如针对新冠疫情的数据可视化系统“COVID-19 Dashboard”、美国约翰斯·霍普金斯大学公共卫生学院发布的新冠疫情实时数据可视化系统等。这些系统都采用了先进的数据可视化技术,充分利用了互联网和移动设备等现代信息技术手段,方便广大用户获取最新的疫情数据信息。
3.设计理念
3.1依据的理论知识技术
Django框架:Django是一种基于MVC模型的Web应用程序框架,提供了许多工具和库来支持快速而灵活的开发。Django可以自动完成很多常见任务,例如数据库操作、表单验证、用户认证等。
数据库:学生信息管理系统需要用到数据库来存储和管理大量的学生信息。Django拥有多种强大的数据库功能,从SQLite到PostgreSQL,再到ORM(Object-Relational Mapping),它能够为用户提供更加便捷、高效的数据访问体验。
HTML、CSS、JavaScript等web技术是学生信息管理系统的重要组成部分,它们可以为用户提供精美的用户界面,并且可以提供丰富的交互功能,从而极大地提升了系统的效率和可靠性。
Python编程语言:Python是Django框架的主要开发语言,同时也是一种流行的高级编程语言,具有良好的可读性、易用性、强大的库支持等特点。
4. 解决问题的方案
4.1 解决问题的总体方案:
本文中所设计的中国国内疫情数据可视化Web管理系统,主要包括三个模块:用户信息管理模块、数据显示模块和统计分析模块。用户信息模块主要包括用户注册、登录、修改密码等功能,保障用户信息安全。
数据展示模块主要介绍疫情数据的实时更新、地图展示、数据可视化等功能。数据分析模块主要针对疫情数据进行统计分析,并提供分析报告和建议。
4.2 方案的主要部分说明或技术分析:
在本系统中,数据展示模块采用了Echarts图表库实现数据可视化和地图展示。同时,为了实时更新疫情数据,我们使用了第三方数据接口获取最新的疫情数据,并将其存储到后台数据库中。用户可以通过前端界面选择不同的时间区间、地区或者指标来查看相关的疫情数据。
数据分析模块主要采用了Python语言进行统计分析,并通过Django框架将统计结果展示在用户界面上。系统提供了多种分析方法,例如:
疫情趋势分析:通过折线图展示疫情确诊、死亡、治愈等数据随时间变化的趋势,并根据趋势预测未来疫情发展趋势。
地域分布分析:通过地图展示各省市疫情的分布情况,包括感染人数、死亡人数、治愈率等指标。同时,支持用户自定义筛选条件进行数据分析和对比。
指标对比分析:通过多维度的数据对比,帮助用户更好地理解疫情数据之间的关系,如确诊人数与治愈率的关系、死亡人数与疫苗接种率的关系等。
4.3 方案可行性分析:
本系统使用的技术和工具都是成熟的、稳定的,并且在国内外已有很多成功的应用案例。因此,从技术角度来看,方案是可行的。同时,本系统所涉及的数据来源是国家卫健委公布的疫情数据,具有权威性和可靠性,可以保证系统数据的准确性。从用户角度来看,本系统采用了直观、易懂的可视化方式展现数据,能够有效地提高用户对疫情数据的理解和分析能力。
4.4 系统的实现
4.4.1 models的设计
定义了四个模型类CovinCurrentProvince、CovinHistProvince、CovinHistChina和CovinNews。这些模型类分别对应了疫情当前省份数据、疫情历史省份数据、疫情历史全国数据和疫情新闻数据。每个模型类都包含了一些字段,如地区名称、累计确诊数、治愈数、死亡数、更新时间、新闻标题和新闻链接等。这些字段定义了模型类中每个实例对象的属性。这些模型类可以用于创建、读取、更新和删除数据库中对应的数据。
from django.db import models
import datetime
# Create your models here.
class CovinCurrentProvince(models.Model):
areaName = models.CharField('地区',max_length=50,default='')
areaShortName = models.CharField('地区简称',max_length=50,default='')
currentCount = models.IntegerField('现存确诊',default=0)
sumCount = models.IntegerField('累计确诊',default=0)
liveCount = models.IntegerField('治愈',default=0)
deadCount = models.IntegerField('死亡',default=0)
class CovinHistProvince(models.Model):
areaName = models.CharField('地区', max_length=50, default='')
sumCount = models.IntegerField('累计确诊', default=0)
liveCount = models.IntegerField('治愈', default=0)
deadCount = models.IntegerField('死亡', default=0)
updateTime = models.CharField('更新时间', max_length=50, default=str(datetime.datetime.now().date()))
class CovinHistChina(models.Model):
updateTime = models.CharField('更新时间', max_length=50, default=str(datetime.datetime.now().date()))
sumCount = models.IntegerField('累计确诊', default=0)
liveCount = models.IntegerField('治愈', default=0)
deadCount = models.IntegerField('死亡', default=0)
foreignConfirm = models.IntegerField('累计境外输入确诊', default=0)
class CovinNews(models.Model):
updateTime = models.CharField('更新时间', max_length=50, default=str(datetime.datetime.now().date()))
newsTitle = models.CharField('新闻标题', max_length=200, default='')
newsUrl = models.CharField('新闻链接', max_length=500, default='')
4.4.2 首页的展示
该网页展示了国内外疫情统计资料的可视化,内容包含了国内外统计历史数据、国内外实时统计、全国各省统计资料、国内历史数据和疫情信息等内容。网页上部显示国内外疫情统计的总体状况,包含现有诊断、累积治愈、累计治疗和累积死亡率等统计。网页下部以图表形式显示各区域的疫情状况,包含区域名称、地区简称、现有确诊、累计确诊、累计治愈和累计死亡等数据。
数据以字典、列表等数据结构保存,每个地区的数据以一个字典保存,包括地区名称、地区简称、现有确诊、累计确诊、累计治愈和累计死亡等数据。
实时更新数据的接口是通过爬虫程序从数据源获取最新数据,然后将其保存到数据库中。页面在渲染时从数据库中读取最新数据,保证数据的实时性。
首页
4.4.3 国内累计数据
用地图形式来展示
# 国内累计数据
def China_confirm(request):
# sig_flag = updateDB('国内实时数据')
# if (sig_flag == 0):
# messages.success(request, '当前无网络,只能显示上次更新的数据!')
data = models.CovinCurrentProvince.objects.all()
list=[]
for data_temp in data:
list.append({'name':data_temp.areaShortName,'value':data_temp.sumCount})
return render(request, 'China_confirm.html',{'db_data_confirm':list})
4.4.4 国内实时数据
以下就是实时的展示
def Province(request):
# sig_flag = updateDB('国内实时数据')
# if (sig_flag == 0):
# messages.success(request, '当前无网络,只能显示上次更新的数据!')
areaList = models.CovinCurrentProvince.objects.all().values('areaName')
areaNameList = []
for area in areaList:
areaNameList.append(area['areaName'])
if request.method == 'GET':
data = models.CovinHistProvince.objects.filter(areaName='台湾')
list = []
for data_temp in data:
list.append({'time': data_temp.updateTime, 'confirm': data_temp.sumCount, 'live': data_temp.liveCount,
'dead': data_temp.deadCount})
list.sort(key=lambda x: x['time'])
return render(request, 'Province.html', {'areaNameList': areaNameList, 'Province_data':list, 'areaName_op':'台湾'})
if request.method == 'POST':
areaName = request.POST['area_op']
data = models.CovinHistProvince.objects.filter(areaName=areaName)
list = []
for data_temp in data:
list.append({'time': data_temp.updateTime, 'confirm': data_temp.sumCount, 'live':data_temp.liveCount, 'dead':data_temp.deadCount})
list.sort(key=lambda x: x['time'])
return render(request,'Province.html',{'areaNameList': areaNameList, 'Province_data':list, 'areaName_op':areaName})
4.4.5 各省数据
统计各省的数据,代码如下
# 各省统计数据
def Province(request):
# sig_flag = updateDB('国内实时数据')
# if (sig_flag == 0):
# messages.success(request, '当前无网络,只能显示上次更新的数据!')
areaList = models.CovinCurrentProvince.objects.all().values('areaName')
areaNameList = []
for area in areaList:
areaNameList.append(area['areaName'])
if request.method == 'GET':
data = models.CovinHistProvince.objects.filter(areaName='台湾')
list = []
for data_temp in data:
list.append({'time': data_temp.updateTime, 'confirm': data_temp.sumCount, 'live': data_temp.liveCount,
'dead': data_temp.deadCount})
list.sort(key=lambda x: x['time'])
return render(request, 'Province.html', {'areaNameList': areaNameList, 'Province_data':list, 'areaName_op':'台湾'})
if request.method == 'POST':
areaName = request.POST['area_op']
data = models.CovinHistProvince.objects.filter(areaName=areaName)
list = []
for data_temp in data:
list.append({'time': data_temp.updateTime, 'confirm': data_temp.sumCount, 'live':data_temp.liveCount, 'dead':data_temp.deadCount})
list.sort(key=lambda x: x['time'])
return render(request,'Province.html',{'areaNameList': areaNameList, 'Province_data':list, 'areaName_op':areaName})
4.4.6 中国历史数据
这个页面实现了对我疫情历史数据的分析
4.5 毕业设计成果评价
健委公布的疫情数据,具有权威性和可靠性,可以保证系统数据的准确性。从用户角度来看,本系统采用了直观、易懂的可视化方式展现数据,能够有效地提高用户对疫情数据的理解和分析能力。
结 论
本文基于Django框架,设计并实现了一个国内疫情数据可视化Web系统。该系统可以方便地获取有关疫情的详细信息,并进行数据分析和对比。同时,该系统还提供了实时数据更新、多样化的图表展示等功能,使用户能够更加深入地了解疫情发展趋势,进而制定更加科学的防控措施。
参考文献
[1] 黄勇. Python Web开发从入门到实践[M]. 北京:人民邮电出版社,2016.
[2] 张磊. Python Django开发实战[M]. 北京:机械工业出版社,2015.
[3] 郑宝华,赵海涛,朱磊. Django企业级Web开发实战[M]. 北京:人民邮电出版社,2015.
[4] 潘茂林. Python Web开发:Django实战[M]. 北京:人民邮电出版社,2015.
[5] 杨杰. Python编程快速上手[M]. 北京:机械工业出版社,2017.
[6] 徐宝文. Python项目开发实战[M]. 北京:北京航空航天大学出版社,2017.
[7] 李春辉. 基于Python的Web编程[M]. 北京:机械工业出版社,2016.
[8] 李鹏飞. 基于Django的学生信息管理系统设计与实现[D]. 河南工程学院, 2019.
[9] 高超,王雪松. Django Web开发实战[M]. 北京:机械工业出版社,2018.
[10] 刘志军,陈建华. Web应用开发:基于Django框架和Python语言[M]. 北京:清华大学出版社,2012.
致 谢
在做这个毕业设计,我受到了指导老师的解惑,解决我存在的问题,在此表示诚挚的感谢。同时我也要感谢国家卫健委提供的权威疫情数据来源,为本系统的开发和实现提供了可靠的数据保障。
随着三年的大学生活即将结束,但是在这段经历中,我收获到的不仅仅是成长,还有坚定的决心、无私的奉献。这一切都归功于我的亲密的家人、真挚的朋友,他们给予的爱、宽容、关怀、指导,让我拥有无限的力量,让我去实现自己的梦想!
最后,我要感谢所有帮助我的人,谢谢你们!
附录
以下就是实时的展示
def Province(request):
# sig_flag = updateDB('国内实时数据')
# if (sig_flag == 0):
# messages.success(request, '当前无网络,只能显示上次更新的数据!')
areaList = models.CovinCurrentProvince.objects.all().values('areaName')
areaNameList = []
for area in areaList:
areaNameList.append(area['areaName'])
if request.method == 'GET':
data = models.CovinHistProvince.objects.filter(areaName='台湾')
list = []
for data_temp in data:
list.append({'time': data_temp.updateTime, 'confirm': data_temp.sumCount, 'live': data_temp.liveCount,
'dead': data_temp.deadCount})
list.sort(key=lambda x: x['time'])
return render(request, 'Province.html', {'areaNameList': areaNameList, 'Province_data':list, 'areaName_op':'台湾'})
if request.method == 'POST':
areaName = request.POST['area_op']
data = models.CovinHistProvince.objects.filter(areaName=areaName)
list = []
for data_temp in data:
list.append({'time': data_temp.updateTime, 'confirm': data_temp.sumCount, 'live':data_temp.liveCount, 'dead':data_temp.deadCount})
list.sort(key=lambda x: x['time'])
return render(request,'Province.html',{'areaNameList': areaNameList, 'Province_data':list, 'areaName_op':areaName})
关注博主下篇更精彩
一键三连!!!
一键三连!!!
一键三连!!!
感谢一键三连!!!
文章来源:https://www.toymoban.com/news/detail-499266.html
文章来源地址https://www.toymoban.com/news/detail-499266.html
到了这里,关于基于Django的国内疫情数据可视化系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!