环境空气质量状况分析 - 日均值图表统计
配置项如下
const getRandom = (n, m) => Math.round(Math.random() * (m - n) + n);
const getRandonData = (length) => {
let seriesData = [];
for (let i = 0; i < length; i++) {
let cate = [];
for (let j = 0; j < 20; j++) {
cate.push(getRandom(1, 50));
}
seriesData.push(cate.sort((a, b) => a - b));
}
return seriesData;
};
/**
* @description 将接口数据转化为符合 echarts 的数据
* @param {array} source 数据源
* @param {boolean} diff 是否按AQI等级拆分数据
* @returns echartsData 符合echarts配置数据
*/
const transformData = (xData, factor) => {
const xAxisData = xData.map((v) => v.name);
const seriesDatas = factor.map(() => getRandonData(xAxisData.length));
return {
xAxisData,
seriesDatas,
};
};
const selected = [
{ code: '320505001', name: '横塘街道' },
{ code: '320505002', name: '狮山街道' },
{ code: '320505003', name: '枫桥街道' },
{ code: '320505004', name: '镇湖街道' },
{ code: '320505005', name: '东渚街道' },
{ code: '320505100', name: '浒墅关镇' },
{ code: '320505101', name: '通安镇' },
{ code: '320505407', name: '苏州科技城' },
];
const legendData = ["PM2.5", "PM10", "NO2", "SO2", "CO", "O3"];
const { xAxisData, seriesDatas } = transformData(selected, legendData);
option = {
legend: {
bottom: 0,
},
tooltip: {
trigger: 'item',
axisPointer: {
type: 'shadow',
},
},
grid: {
left: 50,
top: 15,
right: 15,
bottom: 65,
},
xAxis: {
type: 'category',
nameGap: 30,
splitArea: {
show: false,
},
splitLine: {
show: false,
},
axisLabel: {
interval: 0,
},
data: xAxisData,
},
yAxis: {
type: 'value',
splitArea: {
show: false,
},
},
series: legendData.map((v, i) => ({
name: v,
type: 'boxplot',
data: seriesDatas[i],
})),
};