效果如上。
考虑到实际的情况,本例未延续(2)、(3)中的API接口,而采用https://www.tianqiapi.com/api?version=epidemic&appid=23035354&appsecret=8YvlPNrz,免费公用接口。
在于:
1.数据格式更规范,会减少数据清洗和处理的步骤和时间;
2.数据更为详细,遍及省份、市级数据;
综上因素考虑,本学习案例稍有调整。
一、$.get()获取API数据,并对返回的数据,进行分析处理;
$.get('https://www.tianqiapi.com/api?version=epidemic&appid=23035354&appsecret=8YvlPNrz', function (res, status) {
/*1.读取数据,查看数据格式,按照需求进行数据清洗处理;*/
console.log(res.data);
})
二、对数据进行排序处理,使用到sort函数,自行百度;
/*2.标准数据输出,可以在数据中查询area,调用对应的省份、市,本例已湖北为例*/
var dataObj = res.data.area[0];//省份数据级别
//console.log(dataObj);
var arr = res.data.area[0].cities;//市级数据级别
//console.log(arr);
/*3.按照确认人数降序排列*/
var formal = arr.sort(function (a, b) {
return a.confirmedCount - b.confirmedCount;
});
三、输出echarts数据格式数组;
/*4.输出echarts数据格式数组*/
var cityName = [], confirmedCount = [], suspectedCount = [], curedCount = [], deadCount = [];
for (var i = 0; i < formal.length; i++) {
cityName.push(formal[i].cityName);
confirmedCount.push(formal[i].confirmedCount);
suspectedCount.push(formal[i].suspectedCount);
curedCount.push(formal[i].curedCount);
deadCount.push(formal[i].deadCount);
}
四、echaets渲染图表
var dom = document.getElementById("echart1");
var myChart = echarts.init(dom);
var option = {
title: {
text: dataObj.preProvinceName + '疫情实时数据报告',
subtext: '更新时间:' + res.data.date,
x: 'center',
top: '0',
textStyle: {
color: '#fff',
fontSize: '16'
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'line'
},
confine: true,
},
legend: {
data: ['确诊人数', '疑是人数', '治愈人数', '死亡人数'],
y: 'bottom',
textStyle: {
color: '#fff',
fontSize: '12'
}
},
gird: {
right: '5%',
left: '5%',
top: '15%',
bottom: '5%',
containLabel: true
},
yAxis: {
type: 'category',
axisLine: {
lineStyle: {
color: '#fff'
}
},
data: cityName
},
xAxis: [{
type: 'value',
axisLine: {
lineStyle: {
color: '#fff'
}
}
},
{
type: 'value',
axisLine: {
lineStyle: {
color: '#fff'
}
}
}],
series: [{
data: confirmedCount,
type: 'bar',
xAxisIndex: 1,
name: '确诊人数',
label: {
show: true,
position: 'right',
textStyle: {
color: '#fff'
}
}
}, {
data: suspectedCount,
type: 'line',
name: '疑是人数'
}, {
data: curedCount,
type: 'line',
name: '治愈人数'
}, {
data: deadCount,
type: 'line',
name: '死亡人数'
}
]
};
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
五,定时刷新,实现自动加载数据;
var interval;
getProvince();
clearInterval(interval);
interval = setInterval(function () {
getProvince();
}, 60 * 1000);//60s刷新一次数据;
至此,2019-nCov疫情实时趋势数据API学习系列,全部结束!
Done!