1 前言
?? 這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。
為了大家能夠順利以及最少的精力通過(guò)畢設(shè),學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的是
?? 基于大數(shù)據(jù)的實(shí)時(shí)疫情數(shù)據(jù)可視化項(xiàng)目
??學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿分5分)
- 難度系數(shù):3分
- 工作量:3分
- 創(chuàng)新點(diǎn):3分
?? 選題指導(dǎo), 項(xiàng)目分享:
https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md
1 課題背景
這兩年大家最關(guān)心的便是疫情的進(jìn)展情況了,每天睡前看一眼,睡醒盯一眼,恨不得實(shí)時(shí)關(guān)注著,而很多官方平臺(tái)也用可視化的方式,實(shí)時(shí)更新著數(shù)據(jù)。通過(guò)圖形圖像的方式展示著疫情情況比密密麻麻的一堆表格數(shù)據(jù)看起來(lái)更能發(fā)現(xiàn)數(shù)據(jù)的規(guī)律,方便廣大群眾了解疫情信息也更有利于官方開展疫情防護(hù)工作。
2 數(shù)據(jù)庫(kù)設(shè)計(jì)實(shí)現(xiàn)
本系統(tǒng)數(shù)據(jù)庫(kù)使用集成型數(shù)據(jù)庫(kù)MySQL,MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
mysql架構(gòu)圖
本項(xiàng)目相關(guān)表結(jié)構(gòu)如下:
3 實(shí)現(xiàn)效果
主界面
疫情可視化系統(tǒng)開發(fā)主界面包括全國(guó)疫情熱力圖界面及相關(guān)確診數(shù)量柱形圖、增長(zhǎng)趨勢(shì)圖等。
折線統(tǒng)計(jì)圖
疫情統(tǒng)計(jì)折線圖如圖所示。從全國(guó)累計(jì)趨勢(shì)和新增趨勢(shì)可以看出,我國(guó)疫情情況現(xiàn)在比較穩(wěn)定,能夠得到有效控制。 折線圖可以選擇只顯示一種數(shù)據(jù),并為數(shù)據(jù)重新制作折線圖, 便于更好分析疫情發(fā)展情
況,我國(guó)疑似人數(shù)趨勢(shì),隱藏其他數(shù)據(jù)。將鼠標(biāo)移到相應(yīng)線段可以展示是哪一天的數(shù)據(jù),可以看到,一旦有疑似,可以很快確認(rèn)是否被確診,說(shuō)明我國(guó)對(duì)新冠肺炎已經(jīng)有有效措施進(jìn)行排查,效果也很顯著,側(cè)面說(shuō)明疫情得到控制。
柱狀圖
如圖所示,根據(jù)中國(guó)除湖北外的城市確診情況和全球各國(guó)確診情況制作柱狀統(tǒng)計(jì)圖。 可以看出,在中國(guó),香港確診人數(shù)相較其他城市來(lái)說(shuō),需要加強(qiáng)防護(hù)與監(jiān)管。
相關(guān)代碼
# 世界疫情地圖
@app.route('/world')
def world():
return render_template('world.html')
# 獲取world數(shù)據(jù),世界疫情地圖
@app.route('/get_world')
def get_world():
res = []
global_dict = utils.get_world()
for tup in global_dict:
res.append({'name': tup, 'value': global_dict[tup]})
# 獲取中國(guó)累計(jì)確診人數(shù)
china_data = utils.get_c1_data()[0]
res.append({'name': '中國(guó)', 'value': int(china_data)})
return jsonify({'data': res, 'name': nameMap.namemap})
4 Flask框架
Flask是一個(gè)基于Werkzeug和Jinja2的輕量級(jí)Web應(yīng)用程序框架。與其他同類型框架相比,F(xiàn)lask的靈活性、輕便性和安全性更高,而且容易上手,它可以與MVC模式很好地結(jié)合進(jìn)行開發(fā)。Flask也有強(qiáng)大的定制性,開發(fā)者可以依據(jù)實(shí)際需要增加相應(yīng)的功能,在實(shí)現(xiàn)豐富的功能和擴(kuò)展的同時(shí)能夠保證核心功能的簡(jiǎn)單。Flask豐富的插件庫(kù)能夠讓用戶實(shí)現(xiàn)網(wǎng)站定制的個(gè)性化,從而開發(fā)出功能強(qiáng)大的網(wǎng)站。
本項(xiàng)目在Flask開發(fā)后端時(shí),前端請(qǐng)求會(huì)遇到跨域的問(wèn)題,解決該問(wèn)題有修改數(shù)據(jù)類型為jsonp,采用GET方法,或者在Flask端加上響應(yīng)頭等方式,在此使用安裝Flask-CORS庫(kù)的方式解決跨域問(wèn)題。此外需要安裝請(qǐng)求庫(kù)axios。
框架圖
相關(guān)代碼:
#數(shù)據(jù)庫(kù)連接
from flask import Flask
import pymysql
# SQLAlchemy:Python 下的一款 ORM 框架,建立在數(shù)據(jù)庫(kù) API 之上,使用關(guān)系對(duì)象映射進(jìn)行數(shù)據(jù)庫(kù)操作
# 把關(guān)系數(shù)據(jù)庫(kù)的表結(jié)構(gòu)映射到對(duì)象上,將對(duì)象轉(zhuǎn)換成 SQL,然后使用數(shù)據(jù) API 執(zhí)行 SQL 并獲取執(zhí)行結(jié)果
from sqlalchemy import create_engine
import config
# 創(chuàng)建一個(gè) flask 實(shí)例
manager = Flask(__name__)
# 數(shù)據(jù)庫(kù)連接
db = pymysql.connect(host="localhost", user=config.username,password=config.password, db=config.db_name)
engine = create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/38_food')
# 處理跨域請(qǐng)求
from flask_cors import CORS
from api import food
from model import manager
# 允許用戶跨源發(fā)出 Cookie 或經(jīng)過(guò)身份驗(yàn)證的請(qǐng)求
CORS(manager, supports_credentials=True)
manager.register_blueprint(food.food_info)
5 爬蟲
網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本。爬蟲對(duì)某一站點(diǎn)訪問(wèn),如果可以訪問(wèn)就下載其中的網(wǎng)頁(yè)內(nèi)容,并且通過(guò)爬蟲解析模塊解析得到的網(wǎng)頁(yè)鏈接,把這些鏈接作為之后的抓取目標(biāo),并且在整個(gè)過(guò)程中完全不依賴用戶,自動(dòng)運(yùn)行。若不能訪問(wèn)則根據(jù)爬蟲預(yù)先設(shè)定的策略進(jìn)行下一個(gè) URL的訪問(wèn)。在整個(gè)過(guò)程中爬蟲會(huì)自動(dòng)進(jìn)行異步處理數(shù)據(jù)請(qǐng)求,返回網(wǎng)頁(yè)的抓取數(shù)據(jù)。在整個(gè)的爬蟲運(yùn)行之前,用戶都可以自定義的添加代理,偽 裝 請(qǐng)求頭以便更好地獲取網(wǎng)頁(yè)數(shù)據(jù)。爬蟲流程圖如下:
6 Ajax技術(shù)
Ajax 是一種獨(dú)立于 Web 服務(wù)器軟件的瀏覽器技術(shù)。
Ajax使用 JavaScript 向服務(wù)器提出請(qǐng)求并處理響應(yīng)而不阻塞的用戶核心對(duì)象XMLHttpRequest。通過(guò)這個(gè)對(duì)象,您的 JavaScript 可在不重載頁(yè)面的情況與 Web 服務(wù)器交換數(shù)據(jù),即在不需要刷新頁(yè)面的情況下,就可以產(chǎn)生局部刷新的效果。
前端將需要的參數(shù)轉(zhuǎn)化為JSON字符串,再通過(guò)get/post方式向服務(wù)器發(fā)送一個(gè)請(qǐng)并將參數(shù)直接傳遞給后臺(tái),后臺(tái)對(duì)前端請(qǐng)求做出反應(yīng),接收數(shù)據(jù),將數(shù)據(jù)作為條件查詢,但會(huì)j’son字符串格式的查詢結(jié)果集給前端,前端接收到后臺(tái)返回的數(shù)據(jù)進(jìn)行條件判斷并作出相應(yīng)的頁(yè)面展示。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-449738.html
$.ajax({
url: 'http://127.0.0.1:5000/updatePass',
type: "POST",
data:JSON.stringify(data.field),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(res) {
if (res.code == 200) {
layer.msg(res.msg, {icon: 1});
} else {
layer.msg(res.msg, {icon: 2});
}
}
})
7 Echarts
ECharts(Enterprise Charts)是百度開源的數(shù)據(jù)可視化工具,底層依賴輕量級(jí)Canvas庫(kù)ZRender。兼容了幾乎全部常用瀏覽器的特點(diǎn),使它可廣泛用于PC客戶端和手機(jī)客戶端。ECharts能輔助開發(fā)者整合用戶數(shù)據(jù),創(chuàng)新性的完成個(gè)性化設(shè)置可視化圖表。支持折線圖(區(qū)域圖)、柱狀圖(條狀圖)、散點(diǎn)圖(氣泡圖)、K線圖、餅圖(環(huán)形圖)等,通過(guò)導(dǎo)入 js 庫(kù)在 Java Web 項(xiàng)目上運(yùn)行。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-449738.html
8 最后
到了這里,關(guān)于【畢業(yè)設(shè)計(jì)】大數(shù)據(jù)-實(shí)時(shí)疫情數(shù)據(jù)可視化項(xiàng)目 - flask python的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!