模拟每周跑步数据
配置项如下
// 数据
var dateBase = new Date();
var year = dateBase.getFullYear();
var dottedBase = +dateBase + 1000 * 3600 * 24;
var weekCategory = [];
var radarData = [];
var radarDataAvg = [];
var maxData = 12000;
var weekMaxData = [];
var weekLineData = [];
// 周数据
for (var i = 0; i < 7; i++) {
// 日期
var date = new Date(dottedBase -= 1000 * 3600 * 24);
weekCategory.unshift([
date.getMonth() + 1,
date.getDate()
].join('/'));
// 折线图数据
weekMaxData.push(maxData);
var distance = Math.round(Math.random() * 11000 + 500);
weekLineData.push(distance);
// 雷达图数据
// 我的指标
var averageSpeed = +(Math.random() * 5 + 3).toFixed(3);
var maxSpeed = averageSpeed + (+(Math.random() * 3).toFixed(2));
var hour = +(distance / 1000 / averageSpeed).toFixed(1);
var radarDayData = [distance, averageSpeed, maxSpeed, hour];
radarData.unshift(radarDayData);
// 平均指标
var distanceAvg = Math.round(Math.random() * 8000 + 4000);
var averageSpeedAvg = +(Math.random() * 4 + 4).toFixed(3);
var maxSpeedAvg = averageSpeedAvg + (+(Math.random() * 2).toFixed(2));
var hourAvg = +(distance / 1000 / averageSpeed).toFixed(1);
var radarDayDataAvg = [distanceAvg, averageSpeedAvg, maxSpeedAvg, hourAvg];
radarDataAvg.unshift(radarDayDataAvg);
}
// 颜色设置
var color = {
linearYtoG: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 1,
colorStops: [{
offset: 0,
color: '#f5b44d'
}, {
offset: 1,
color: '#28f8de'
}]
},
linearGtoB: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 0,
colorStops: [{
offset: 0,
color: '#43dfa2'
}, {
offset: 1,
color: '#28f8de'
}]
},
linearBtoG: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 0,
colorStops: [{
offset: 0,
color: '#1c98e8'
}, {
offset: 1,
color: '#28f8de'
}]
},
areaBtoG: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(35,184,210,.2)'
}, {
offset: 1,
color: 'rgba(35,184,210,0)'
}]
}
};
var option = {
title: {
text: '一周跑步数据',
textStyle: {
color: '#fff',
fontSize: 32,
fontWeight: 'normal'
},
subtext: year + '/' + weekCategory[6],
subtextStyle: {
color: '#fff',
fontSize: 16,
},
top: 50,
left: 80
},
legend: {
top: 220,
left: 80,
orient: 'vertical',
itemGap: 15,
itemWidth: 12,
itemHeight: 12,
data: ['平均指标', '我的指标'],
textStyle: {
color: '#fff',
fontSize: 14,
},
},
tooltip: {
trigger: 'item'
},
radar: {
center: ['68%', '27%'],
radius: '40%',
name: {
color: '#fff'
},
splitNumber: 8,
axisLine: {
lineStyle: {
color: color.linearYtoG,
opacity: .6
}
},
splitLine: {
lineStyle: {
color: color.linearYtoG,
opacity: .6
}
},
splitArea: {
areaStyle: {
color: '#fff',
opacity: .1,
shadowBlur: 25,
shadowColor: '#000',
shadowOffsetX: 0,
shadowOffsetY: 5,
}
},
indicator: [{
name: '全程距离(m)',
max: maxData
}, {
name: '平均速度(km/h)',
max: 10
}, {
name: '最快速度(km/h)',
max: 12
}, {
name: '总计时间(h)',
max: 3.5
}]
},
grid: {
left: 90,
right: 80,
bottom: 40,
top: '60%',
},
xAxis: {
type: 'category',
position: 'bottom',
axisLine: true,
axisLabel: {
color: 'rgba(255,255,255,.8)',
fontSize: 12
},
data: weekCategory,
},
yAxis: {
name: 'km/h',
nameLocation: 'end',
nameGap: 24,
nameTextStyle: {
color: 'rgba(255,255,255,.5)',
fontSize: 14
},
max: maxData,
splitNumber: 4,
axisLine: {
lineStyle: {
opacity: 0
}
},
splitLine: {
show: true,
lineStyle: {
color: '#fff',
opacity: .1
}
},
axisLabel: {
color: 'rgba(255,255,255,.8)',
fontSize: 12
}
},
series: [{
name: '每日跑步指标分布与比较',
type: 'radar',
symbolSize: 0,
data: [{
value: radarDataAvg[6],
name: '平均指标',
itemStyle: {
normal: {
color: '#f8d351',
}
},
lineStyle: {
normal: {
opacity: 0,
}
},
areaStyle: {
normal: {
color: '#f8d351',
shadowBlur: 25,
shadowColor: 'rgba(248,211,81,.3)',
shadowOffsetX: 0,
shadowOffsetY: -10,
opacity: 1
}
},
}, {
value: radarData[6],
name: '我的指标',
itemStyle: {
normal: {
color: '#43dfa2',
}
},
lineStyle: {
normal: {
opacity: 0,
}
},
areaStyle: {
normal: {
color: color.linearGtoB,
shadowBlur: 15,
shadowColor: 'rgba(0,0,0,.2)',
shadowOffsetX: 0,
shadowOffsetY: 5,
opacity: .8
}
},
}]
}, {
name: '每日跑步里程',
type: 'line',
smooth: true,
symbol: 'emptyCircle',
symbolSize: 8,
itemStyle: {
normal: {
color: '#fff'
}
},
lineStyle: {
normal: {
color: color.linearBtoG,
width: 3
}
},
areaStyle: {
normal: {
color: color.areaBtoG,
}
},
data: weekLineData,
lineSmooth: true,
markLine: {
silent: true,
data: [{
type: 'average',
name: '平均值'
}],
precision: 0,
label: {
normal: {
formatter: '平均值: \n {c}'
}
},
lineStyle: {
normal: {
color: 'rgba(248,211,81,.7)'
}
}
},
tooltip: {
position: 'top',
formatter: '{c} m',
backgroundColor: 'rgba(28,152,232,.2)',
padding: 6
}
}, {
name: '占位背景',
type: 'bar',
itemStyle: {
normal: {
show: true,
color: '#000',
opacity: 0
}
},
silent: true,
barWidth: '50%',
data: weekMaxData,
animation: false
}, {
name: '占位背景',
type: 'bar',
itemStyle: {
normal: {
show: true,
color: '#000',
opacity: .1
}
},
silent: true,
barWidth: '50%',
barGap: 0,
data: weekMaxData,
animation: false
}],
backgroundColor: '#383546',
};
// 点击事件
myChart.on('click', function(params) {
if (params.componentType === 'series' && params.seriesType === 'line') {
var dataIndex = params.dataIndex;
myChart.setOption({
series: [
{
name: '每日跑步指标分布与比较',
type: 'radar',
symbolSize: 0,
data: [{
name: '平均指标',
value: radarDataAvg[dataIndex],
itemStyle: {
normal: {
color: '#f8d351',
}
},
lineStyle: {
normal: {
opacity: 0,
}
},
areaStyle: {
normal: {
color: '#f8d351',
shadowBlur: 25,
shadowColor: 'rgba(248,211,81,.3)',
shadowOffsetX: 0,
shadowOffsetY: -10,
opacity: 1
}
},
}, {
name: '我的指标',
value: radarData[dataIndex],
itemStyle: {
normal: {
color: '#43dfa2',
}
},
lineStyle: {
normal: {
opacity: 0,
}
},
areaStyle: {
normal: {
color: color.linearGtoB,
shadowBlur: 15,
shadowColor: 'rgba(0,0,0,.2)',
shadowOffsetX: 0,
shadowOffsetY: 5,
opacity: .8
}
},
}]
}]
})
}
});