基于Echarts的疫情数据可视化技术研究

来源 :甘肃科技纵横 | 被引量 : 0次 | 上传用户:gen19gu86
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:文中首先对疫情数据可视化的项目需求进行了背景分析,接着介绍了项目的总体设计思路,然后具体阐述了疫情数据库的设计、疫情数据的查询、疫情数据的展示,并分析了核心代码。文中利用MySQL数据库存放从官网爬取的疫情数据,使用PHP技术查询MySQL数据库中的疫情数据,实现网页和数据库的动态交互,利用Echarts图表技术进行疫情数据的可视化,制作了疫情折线图,用来展示疫情近期的变化趋势,制作了疫情柱形图,用来展示各个国家的疫情对比情况,让民众更加直观清晰地获取关键的疫情信息、了解疫情形势、判断疫情走势,为疫情防控提供直观、形象的数据支持。
  关键词:疫情数据查询及可视化、Echarts图表、MySQL数据库、PHP技术
  中图分类号:TP31      文献标识码:B
  1背景
  2020年,新冠病毒肆虐。疫情发生以来,全国上下步调一致、众志成城、共抗疫情。全民抗疫的同时,民众需要一个能够查看当前疫情数据的渠道,以此充分了解全国各地乃至全世界的疫情形势。本文综合运用PHP技术、MySQL数据库技术、Echarts图表技术,制作疫情趋势图和疫情对比图,用可视化的方式直观形象地呈现疫情数据,让民众更加直观清晰地获取关键的疫情信息。
  2设计思路
  折线图和柱形图,是最常见的疫情数据可视化的方式。折线图容易看出数据的走向,因此适合展示疫情近期的变化趋势,而通过柱形图则可以直观地看出各个国家的疫情对比情况。项目的设计思路如下:
  (1)从丁香园网站爬取疫情数据,并利用MySQL数据库技术存放每天爬取的疫情数据;
  (2)使用PHP技术实现网页后端和MySQL数据库的动态交互,从数据中查询疫情数据,并输出到网页前端;
  (3)在网页前端使用Echarts折线图展示疫情变化趋势,使用柱形图展示各个国家疫情对比情况[1]
  3数据查询
  3.1数据库设计
  在MySQL数据库中新建一个疫情数据库data,在data中新建疫情数据表格summary;把从官网爬取的全世界的疫情数据导入到data数据库的summary表中。summary表中包含的字段有:countryName(国家名称)、current(现存确诊人数)、accumulate(累计确诊总人数)、healing(治愈总人数)、die(死亡总人数)、time(时间)。
  3.2连接数据库
  编写PHP文件link.php文件,存放在网站目录的conn子目录下。该文件负责连接data数据库,核心代码如下[2]
  $dbconn=mysqli_connect("localhost","Tom","123456") or die('服务器连接失败!'); //连接MySQL服务器,登录名为Tom,密码为123456。
  mysqli_select_db($dbconn,data') or die('疫情数据库连接失败!'); //选择数据库
  mysqli_set_charset($dbconn,"utf8");//设置字符集为中文utf8标准
  date_default_timezone_set("PRC");//设置时区为东八区北京时间
  3.3 查询近期中国疫情数据
  编写PHP文件trend.php,查询中国近期疫情数据,核心代码如下所示:
  require "./conn/link.php";    //导入数据库连接文件link.php
  $query="select * from summary where countryName='中国' order by time"; //定义一个SQL语句,该语句可以从summary表中查询中国近期疫情数据,并按照时间进行升序排列。
  $result = mysqli_query($dbconn,$query); //執行查询语句获得结果集,结果集中存放的是中国的疫情数据,包括了国家名,现存确诊人数、累计确诊总人数、治愈总人数、死亡总人数、时间。
  while($info= mysqli_fetch_array($result)){ //从结果集中逐行读取中国近期疫情数据,写入到数组中。创建数组的时候,每一个疫情信息对应的键分别是countryName 、current、accumulate、healing、die、time。
  $yq []= array(
  'current'=>$info['current'],  //从结果集中读取现存确诊,写入数组
  ' accumulate '=>$info[' accumulate '], //从结果集中读取累计确诊,写入数组
  ' healing '=>$info[' healing '], //从结果集中读取治愈总人数,写入数组
  'die'=>$info['die'], //从结果集中读取死亡总人数,写入数组
  'time'=>$info['time'] //从结果集中读取时间,写入数组
  ); }
  $yqdata=json_encode($yq); //把疫情数组转换为json格式的数据
  echo $yqdata; //把json格式的疫情数据输出到网页前端
  3.4查询当天世界疫情数据
  编写world.php文件,查询当天世界疫情数据,核心代码和查询近期中国疫情数据基本相同,仅是查询语句有所不同,查询当天世界疫情数据的SQL语句如下:   $t=date('Y-m-d');//创建系统当前时间
  $sql="select * from summary where time=$t order by accumulate ";//从summary表中查询当天世界疫情数据,并按照累计确诊进行升序排序。
  4制作疫情趋势图
  百度Echarts是一个基于Canvas的纯Javascript图表库,提供了生动、直观、交互性的、可高度个性化定制的Web可视化图表,如地图、折线图、柱形图等。在本文中,采用折线图来直观呈现近期疫情的变化趋势。疫情趋势图(以中国现存确诊和累计确诊为例)的制作步骤及对应的核心代码如下所示[3]
  (1)引入jQuery、Echarts
  <script src="./jssrc/jquery.js"></script>
  <script src="./jssrc/echarts.min.js"></script>
  jquery.js、echarts.min.js这两个文件都存放在了网站根目录的jssrc子目录下。
  (2)为疫情趋势图准备一个具有高宽的Dom容器
  <div id="trendChina" style="height:600px;width:800px"></div>//创建一个div用来存放疫情趋势图。
  (3)基于准备好的trendChina,初始化疫情趋势图
  var  trend = echarts.init(document.getElementById('trendChina'));
  (4)设置疫情趋势图的配置项,最关键的是疫情数据的动态加载:采用$.ajax方法把时间动态加载到趋势图的X轴上,把现存确诊和累计确诊加载到series数据系列区域。这个趋势图的X轴是分类轴,Y轴是数值轴,因此xAxis的type属性值是category,yAxis的type属性值是value。找到xAxis属性,设置data属性,用ajax技术在X轴上动态加载疫情时间,核心代码如下[4]
  $.ajax({
  type : "post",    //请求方式是post
  url : "trend.php",//请求地址是trend.php,该文件可以从数据库中查询近期中国疫情数据,查询得到的数据格式是json格式。
  dataType : "json",//请求之后返回的数据格式是json
  success : function(result) {
  if (result) {
  for(var j=0;j<result.length;j++){
  array.push(result[j].time); //如果请求成功,就在for循環中依次从查询结果中读取疫情时间,并写入到数组array中。
  }}}
  return array;   //返回数组,完成X轴上时间的动态加载
  })()
  动态加载现存确诊、累计确诊,只需要在series配置项中找到对应的数据系列,设置type: "line"(折线图),然后设置data配置项即可。加载方法和动态加载时间大同小异,仍然采用ajax加载,加载现存确诊时需要从结果集中获取现存确诊并写入数组中:array.push(result[j]. current);而加载累积确诊时需要从结果集中获取累积确诊并写入数组中:array.push(result[j]. accumulate);
  (5)使用刚指定的配置项和数据显示图表
  

trend.setOption(trendoption);
  疫情趋势图网页运行效果如图1所示:
  5制作疫情对比图
  各个国家的疫情对比情况采用Echarts柱形图来展示(以各个国家累计确诊对比图为例)。这个柱形图的Y轴是分类轴,X轴是数值轴,因此yAxis的type属性值是category,xAxis的type属性值是value。找到yAxis属性,设置data属性,用ajax技术在y轴上动态加载国家名称。核心代码如下所示[5]
  $.ajax({
  type : "post",    //请求方式是post
  url : "world.php",//请求地址是world.php,该文件可以从数据库中查询当天世界疫情数据,查询得到的数据格式是json格式。
  dataType : "json",//请求之后返回的数据格式是json
  success : function(result) {
  if (result) {
  for(var j=0;j<result.length;j++){
  arr.push(result[j].countryName);//如果请求成功,就在for循环中依次从查询结果中读取国家名称,并写入到数组arr中。
  }}}   return array;   //返回数组,完成Y轴上国家名称的动态加载
  })()
  

动态加载累计确诊,只需要在series配置项中找到对应的累计确诊数据系列,设置type: "bar"(柱形图),然后设置data配置项即可。加载方法和动态加载国家名大同小异,仍然采用ajax加载,加载累计确诊时需要从结果集中获取各个国家的累计确诊数字并写入数组中:arr.push(result[j]. accumulate) [6];
  累计确诊疫情对比图网页运行效果如图2所示:
  6总结
  大数据技术在疫情宣传、疫情防控、复工复产等方面都发挥着重要的作用,而数据可视化技术,作为大数据的一种有效的表现形式,更是满足了民众对疫情信息的获取和查看需求。本文综合利用PHP、MySQL、Echarts图表技术,制作了疫情趋势图和疫情对比图,帮助民众了解疫情形势、判断疫情走势,为疫情防控提供直观、形象的数据支持。
  參考文献:
  [1]冀潇,李扬. 采用ECharts可视化技术实现的数据体系监控系统[J].计算机系统应用,2017,022(6):72-76.
  [2]赵海国.Ajax技术支持下的ECharts动态数据实时刷新技术的实现[J].电子技术,2018,000(000)3:25-27.
  [3]洪敏,吴红亚,杨保华.基于HTML的Echarts的动态数据显示前端设计[J].计算机时代,2018, (000)8:27-29.
  [4]周玮祎.基于ECharts的市场分析设计与实现[J].电子技术应用,2019, (45)12:101-105.
  [5]黑马程序员. PHP+Ajax+jQuery网站开发项目式教程[M].北京:人民邮电出版社,2016.
  [6]黑马程序员. PHP+MySQL网站开发项目式教程[M].北京:人民邮电出版社,2019.
  作者简介:朱二莉(1980—),女,汉族,籍贯江苏省睢宁县,苏州经贸职业技术学院教师,职称讲师,硕士研究生学位,研究方向为软件开发、网络技术。
其他文献
摘要:随着全球经济一体化和电子信息技术的快速发展,跨境电商这种跨越国界的网络信息化、高度开放化、多元化、立体化的国际贸易方式迅速发展起来,促进了全球国际贸易的发展和变革。江苏是我国外向型经济发达的省份,中小企业占据了半壁江山,通过跨境电商这一新型的贸易方式出口商品,已经成为江苏中小企业扩大外贸市场范围,实现贸易多元化的重要途径,跨境电商促进了贸易方式的转型,推动了江苏经济的快速发展。本文首先分析了
期刊
摘要:道路建设是重大民生工程,也是地区经济发展的基础设施。在道路工程建设规模不断扩大的同时,由于缺少科学规划、环保意识不强,在工程施工中出现了植被破坏、水土流失的问题。本文以道路边坡水土流失为例,分别从产生危害、治理现状和防治措施等方面展开了简要分析。本文首先概述了边坡水土流失对生态环境、道路工程产生的严重危害,随后列举了当前道路边坡水土流失治理中存在的一些问题,最后结合个人工作经验,分别从因地制
期刊
摘要:沥青路面是我国传统交通道路的常见路面类型,其有益于保证车辆运行过程的安全性,维护人们生命财产安全,促进和谐社会建设发展进程。笔者结合既往沥青路面施工实践,发现其存在诸多质量问题。为最大限度的保证沥青路面施工质量,延长其使用年限,就应加强路面施工監测工作。文章在阐述道路沥青路面施工特征的基础上,结合具体工程案例,分析研究沥青路面具体施工技术措施,并从多个方面探究沥青路面施工质量的控制措施。  
期刊
摘要:本论述研究了地方农业院校农业科技创新人才分类培养模式的战略目标、战略要点和对策建议。在战略目标中,需要培养农业科技创新人才的创新能力,突出分类培养模式的综合性和实用性。在战略要点里,从课程体系、教学模式、导师建设、培养方式、培养质量五个方面,针对农业科技创新人才分类培养模式设定了具体的操作方式。在对策建议中,从全过程管理、政策支持、质量保障体系三个方面,提出了要多管齐下优化农业科技创新人才的
期刊
摘要:目的:观察无托槽透明隐形矫治器矫治青少年骨性Ⅱ类的临床应用,结合头影测量分析和统计学数据分析,为隐形矫治的基础研究和临床应用提供参考依据。方法:观察组采用无托槽透明隐形矫治器A6矫治,对照组采用传统矫治器Twin-Block矫治。结果隐形矫治可在三维方向上控制牙一合-N骨:在矢状向前导释放下颌,同时利用下颌前导的力量向后抑制上颌骨的发育;在水平向上颌横向扩弓的同时排齐整平牙列;在垂直向前导下
期刊
【摘要】近年来,随着人口老龄化越来越严重。国家根据人口结构的变化,有针对性的提出了全面“二胎政策”,对缓解我国老龄化人口、提高出生率有促进作用,从而引起了广大人民的关注和重视,养育,不管对于个人还是家庭,都是值得认真思虑的问题,是否生育二胎,对于大多数家庭来说需要认真去权衡利弊。自2016年1月1日起,“全面二孩”政策在全国正式实施。多方研究表明,在“全面二孩”的政策实施下,效果并不如预期理想,生
期刊
摘要:目的:对标准化分级转运方案在危重症患者院内转运的应用效果进行研究探讨。方法:选取2017年4月-2018年6月我院由急诊抢救室转运的284例危重症患者作为研究对象,分为研究组与对照组,其中研究组使用分级转运模式,对照组使用标准转运模式,记录两组患者的转运时间及不良反应发生率并进行对比。结果:研究组的各级转运时间较对照组更短,不良反应发生率较于对照组更低,其差异显著,具有统计学意义。结论:在转
期刊
摘要:科技型中小企业不但是拉动经济增长的重要力量,更是我国成为创新型国家的主力军。本论述首先调研了苏州推动科技型中小企业创新发展的主要措施;再进一步通过实证调研,分析了科技型中小企业技术创新中面临的关键问题;最后,针对性地提出了提升科技型中小企业创新能力的相关建议和对策。  关键词:科技型中小企业;创新能力;产学研合作  中图分类号:F276.44;F273.1文献标志码:A  0引言  “十三五
期刊
摘要:伴随智慧校园、智慧教室的建设与普及,智慧教育在西藏高校也有了初步发展。在智慧教育逐步普及的时代,西藏高校的智慧教育建设离不开差异化教学。通过对中国知网相关文献进行分析,纵观西藏高校差异化教学的发展与研究,西藏高校差异化教学还存在三个方面的问题:西藏教育工作者对差异化教学的重视程度不高,甚至出现错误的理解;西藏教育工作者针对差异化教学的研究不全面、不深入;缺乏适切的差异化教学策略。针对上述问题
期刊
摘要:利用Web of Science、ESI、InCites数据库,对西北民族大学2009年-2019年总体论文产出及影响力、载文期刊分布、合作机构情况、基金资助情况、高被引论文和热点论文、学科潜力值、与其他国家民委5所院校相对比,为学校科研产出及学科规划决策提供客观数据。  关键词:InCites;ESI;科研产出;西北民族大学  中图分类号:G353.1;G644文献标志码:A  2015年
期刊