<班級的鏈接> | |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/fzu/2020SpringW/homework/10456 |
這個作業的目標 | 完成疫情統計可視化,並學習GitHub使用 |
結對學號 | 021700915、091700403 |
作業正文 | https://www.cnblogs.com/lxbxyz/p/12489202.html |
其他參考文獻 | node.js教程、GitHub使用教程、JavaScript教程 |
程序GitHub倉庫地址為:https://github.com/ideaflyit/InfectStatisticWeb
一、成品展示
1.概述
疫情統計系統主要分為兩個頁面,分別為全國頁面和分省頁面。全國頁面主要包含全國疫情數據、全國疫情統計圖、全國確診總量趨勢圖、全國確診增量趨勢圖等。分省頁面主要包含各省疫情數據、各省確診總量趨勢圖、各省確診增量圖、省內各市確診,治愈,死亡人數的詳細數據以及實時疫情新聞等。
2.全國頁面
全國頁面主要包含全國疫情數據、全國疫情統計圖、全國確診總量趨勢圖、全國確診增量趨勢圖等。
(1)全國疫情數據
全國疫情數據以文字形式顯示全國實時的疫情數據,包括確診人數,治愈人數,死亡人數,疑似人數。
(2)全國疫情統計圖
全國疫情數據是在全國地圖上使用不同的顏色代表大概確診人數區間,顏色的深淺表示疫情的嚴重程度,可以直觀了解高危區域。鼠標移到每個省份會高亮顯示,並展示該省份的名稱、確診人數、治愈人數、死亡人數。
(3)全國確診總量趨勢圖、全國確診增量趨勢圖
全國確診總量趨勢圖以折線統計圖的方式顯示全國確診的總量的趨勢,橫坐標為日期,縱坐標為確診人數。並且當鼠標懸浮在某某天的時候會顯示該天的日期、確診、治愈、死亡數據。
同樣,全國確診增量趨勢圖也以折線統計圖的方式顯示全國確診的增量的趨勢,橫坐標為日期,縱坐標為增量人數。並且當鼠標懸浮在某某天的時候會顯示該天的日期、確診、治愈、死亡數據。
(4)總覽
3.分省頁面
分省頁面主要包含各省疫情數據、各省確診總量趨勢圖、各省確診增量圖、省內各市確診,治愈,死亡人數的詳細數據以及實時疫情新聞等。
(1)各省疫情數據
各省疫情數據以文字形式顯示各省實時的疫情數據,包括確診人數,治愈人數,死亡人數,疑似人數。頁面提供選擇框,用戶可以根據需要選擇需要查詢的省份來查看目標省份的具體數據。
(2)各省確診總量趨勢圖、各省確診增量圖
各省確診總量趨勢圖以折線統計圖的方式顯示各省確診的總量的趨勢,橫坐標為日期,縱坐標為確診人數。並且當鼠標懸浮在某某天的時候會顯示該天的具體數據。
同樣各省確診增量趨勢圖也以折線統計圖方式顯示各省的確診的總量的趨勢,很坐標為日期,縱坐標為確診人數增量。並且當鼠標懸浮在某某天的時候會顯示該天的具體數據。
(3)省內各市的詳細數據
省內各市的詳細數據顯示各市的確診,治愈,死亡人數。
(4)疫情實時新聞
疫情實時新聞顯示主流媒體播報的疫情新聞,用戶可以點擊相應的標題查看對應的新聞
(5)總覽
二、實現
1.討論
2、功能結構圖
疫情統計系統主要分為兩個頁面,分別為全國頁面和分省頁面。全國頁面主要包含全國疫情數據、全國疫情統計圖、全國確診總量趨勢圖、全國確診增量趨勢圖等。分省頁面主要包含各省疫情數據、各省確診總量趨勢圖、各省確診增量圖、省內各市確診,治愈,死亡人數的詳細數據以及實時疫情新聞等。
3.設計實現過程
本次疫情統計可視化設計主要分為兩個頁面。一個是全國頁面,還有一個是分省頁面。通過我們的分析,全國頁面主要包含以下功能:查看全國疫情數據、查看全國疫情統計圖、查看全國確診總量趨勢圖、查看全國確診增量趨勢圖。分省頁面主要包含以下功能:查看各省疫情數據、查看各省確診總量趨勢圖、查看各省確診增量圖、查看省內各市確診,治愈,死亡人數的詳細數據以及查看實時疫情新聞。下面分別講述以上功能的實現
(1)全國頁面
-
查看全國疫情數據
調用接口https://lab.ahusmart.com/nCoV/api/overall?latest=1,使用
var data = res.results[0];
獲取json的值,data.confirmedCount data.curedCount data.deadCount data.suspectedCount
分別獲取全國確診人數、全國治愈人數、全國死亡人數 -
查看全國疫情統計圖
使用china.js顯示中國地圖,使用node.js實現爬蟲,然后將爬取的數據放入地圖中。具體如下:
-
spider.js
url指定請求的目標網站url =
https://ncov.dxy.cn/ncovh5/view/pneumonia
,分析目標頁面DOM結構,找到所要抓取的信息的相關DOM元素,提取對應疫情數據 -
index.js
先引入express,再創建服務器應用,用app.get監聽請求,加入res.setHeader("Access-Control-Allow-Origin","*")解決跨域問題,最后用app.listen分配端口號啟動服務
-
將filterData傳入到echarts中
-
-
全國確診總量趨勢圖、全國確診增量趨勢圖
調取api實現疫情數據的獲取,在series中用data注入數據,使用echart實現折線統計圖的顯示。
(2)分省頁面
-
查看各省疫情數據
調用接口'https://lab.ahusmart.com/nCoV/api/overall?latest=1&province=' + province獲取各省份數據,使用
var confirm
存放各省確診數據,var suspectedCount
存放各省疑似數據,var curedCount
存放治愈數據var deadCount
存放死亡數據。遍歷從接口獲取的數據,統計總的確診,疑似,治愈,死亡數據。 -
查看全國確診總量趨勢圖、全國確診增量趨勢圖
調取api實現疫情數據的獲取,在series中用data注入數據,使用echart實現折線統計圖的顯示。
-
查看實時疫情新聞
直接調取爬取的數據並展示數據
-
查看省內各市確診,治愈,死亡人數的詳細數據
直接調取爬取的數據並展示數據
四.關鍵代碼
1.country.html
(1)頁面總體結構
(2)獲取全國的總數據
-
var data = res.results[0];
獲取json的值 -
data.confirmedCount data.curedCount data.deadCount data.suspectedCount
分別獲取全國確診人數、全國治愈人數、全國死亡人數
var dataUrl = "https://lab.ahusmart.com/nCoV/";
var dataUrlBackup = "https://lab.ahusmart.com/nCoV/";
$(document).ready(function() {
initCoreData();
initTrendChart();
initAddChart();
});
var initCoreData = function(province) {
$.ajax({
url: dataUrl + 'api/overall?latest=1',
type: 'get',
success: function(res) {
if(res.success === true) {
var data = res.results[0];
var html = ' 全國疫情數據:\n' +
' <div>' +
'<span class="label label-warning data-confirmed">確診</span>:' + data.confirmedCount + ' ' +
'<span class="label label-success data-cured">治愈</span>:' + data.curedCount + ' ' +
'<span class="label label-danger data-dead">死亡</span>:' + data.deadCount + ' ' +
'<span class="label label-info data-dead">疑似</span>:' + data.suspectedCount + '</div>\n' +
' ';
$(".core-data").html(html);
return;
}
alert("獲取數據失敗");
},
error: function(res) {
if(res.state() === "rejected" && !this.url.includes(dataUrlBackup)) {
this.url = this.