【数据可视化】国内新冠疫情数据可视化大屏

本项目是采用Flask框架配合ehcharts做的疫情数据可视化大屏

项目展示

本项目将平台分为五大模块:
(1) 标题模块:存放项目标题,并实时显示当前时间。
(2) 疫情数据模块:以金色字体展示当前的疫情状况的文本数据,分为累计确诊、累计疑
似、累计治愈、累计死亡四个部分。
(3) 疫情地图模块:展示中国疫情数据地图,选取蓝色作为反应色彩,以颜色深度反应疫
情状况,颜色越深就代表该区域感染的人数越多,疫情形势越险峻。鼠标划过区域将显示该
区域累计确诊人数,并有鼠标左击地图下钻功能以看到市级疫情地图数据。
(4) 疫情趋势模块:展示从疫情开始到现在每天的累计趋势和新增趋势,在累计趋势中包
含累计确诊、现有疑似、累计治愈、累计死亡曲线,新增趋势中包含新增确诊和新增死亡曲
线。
(5) 国外疫情数据及 top10 模块:通过柱状图展示国外疫情现状,以六大洲为主数据,采
用与中国地图同样的左键单击下钻方式来详细的展示各个州内国家的数据。通过扇形图展示
国外确诊病例国家 top10,一目了然的了解国外目前疫情发展最为严重的国家。

项目效果图
项目GitHub链接

疫情数据获取

本项目使用的数据来自丁香园全球新冠疫情地图网站和腾讯新闻新型冠状病毒肺炎疫情实时追踪站。
先分析目标网页结构,通过 Python 的 request 库向页面发起请求,获取网页源码,通过 Beautifulsoup 库的 find 函数查找匹配疫情数据所在字符串,经
分析选取本项目所需要的数据有:国内各省市的确诊人数、疑似人数、死亡人数、治愈人数、新增确诊人数、新增疑似人数、日期以及国外各国的确诊人数。并将其转为 json 格式存储在文件中。再通过 Pymysql 库将 json 数据文件解析后批量存储到 Mysql 中,为方便查看管理操作数据集,使用 SQLyog来管理数据库。

项目具体实现过程

项目结构目录:
结构

项目中名叫utils的python文件定义了许多函数用来专门的从数据库中读取数据,在这个文件中我借助pymysql库与数据库建立连接,并建立了一个游标对象来执行SQL语句和获取查询结果。
项目名叫app的python文件为各个功能模块单独定义了页面路由以及视图函数,通过函数调用utils中的函数,将得到的数据通过jsonify函数将获取到的数据转换为JSON格式并封装为HTTP响应对象,然后将HTTP响应对象返回给客户端,当客户端请求我定义的页面路由里,将会收到从服务器返回的JSON格式的数据。
在js的文件夹中,单独写了一个controller.js文件用来提供给各个模块以通过ajax向服务器发起get请求,获取到json数据后便可以交给echarts来实现数据的可视化。
Ajax技术还能页面上异步更新数据,并根据数据的变化动态更新页面上的图表和文字内容。

在本地开发完项目后就将项目部署到云服务器上了,在Linux下配置好项目运行所需环境,配置好Nginx 和 Gunicorn之后就可以启动项目。


复试中可能会问到的点

1.什么是Flaks框架?它与Django框架有什么区别?

Django 和 Flask 都是常用的 Python Web 框架,它们都可以用于构建 Web 应用程序,但在某些方面有所不同。
Django 是一个全功能的 Web 框架,它提供了大量的内置组件,包括 ORM、模板引擎、路由、表单处理、认证、管理后台等,能够快速构建出大型 Web 应用程序。
Flask 是一个微型 Web 框架,它的设计目标是简单、轻量级和灵活,只提供了基本的 Web 应用程序开发功能。Flask 允许开发者通过插件和扩展来扩展其功能,因此可以根据需要构建出特定的应用程序。Flask 的开发者通常采用简单而直接的设计哲学,因此可以更快地启动并运行应用程序。
总的来说,Django 更适合开发大型 Web 应用程序,提供了大量的内置功能和组件,可以快速构建出功能丰富的 Web 应用程序。Flask 更适合小型或中型 Web 应用程序,因为它更灵活、更轻量级,可以根据需要进行定制和扩展。

2. 你在服务器部署项目中提到了Nignx和Gunicorn,介绍一下这两个?

Nginx 和 Gunicorn 都是常用的 Web 服务器软件,它们通常用于部署 Python Web 应用程序。
Nginx 是一个高性能的反向代理服务器,常用于处理静态资源和负载均衡。在 Flask 应用程序部署过程中,Nginx 通常会作为反向代理服务器,接收客户端的请求,将请求转发给 Gunicorn 作为应用服务器进行处理,并将处理结果返回给客户端。
Gunicorn(Green Unicorn)是一个 Python WSGI (Web Server Gateway Interface) HTTP 服务器,用于部署 Python Web 应用程序。它支持多进程模式,可以同时处理多个客户端请求,并提供了高效的性能和稳定性。在 Flask 应用程序部署过程中,Gunicorn 会作为应用服务器运行 Flask 应用程序,处理客户端请求。
综合来看,Nginx 和 Gunicorn 的组合可以提高 Flask 应用程序的性能和可靠性,同时提供更好的用户体验。

3. 你在项目中提到了ajax,介绍一下它的用途功能?

ajax 全名 async javascript and XML(异步JavaScript和XML),是前后台交互的能⼒,一种用于创建快速动态网页的技术,也就是我们客户端给服务端发送消息的⼯具,它可以:

  1. 不刷新页面更新网页
  2. 在页面加载后从服务器请求数据
  3. 在页面加载后从服务器接收数据
  4. 在后台向服务器发送数据

4.介绍一下echarts?

ECharts是一个基于JavaScript的开源可视化库,用于构建交互式的数据可视化图表和图形。ECharts提供了多种类型的图表,包括线性图、散点图、饼图、地图等,并且支持动画效果和数据区间选择、缩放等交互操作。ECharts可以轻松地在Web页面、移动端和桌面应用程序中使用,并且可以与React、Vue等前端框架进行集成。
使用过程:
初始化实例:echarts.init(document.getElementById());
配置图表:通过配置项来设置图表的属性,包括图表类型、数据、样式、交互等。
渲染图表:myChart.setOption(数据),将配置好的图表实例传递给 ECharts 的渲染方法,将图表渲染到页面上。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!