Echarts | 动态数据 + 时间坐标轴
作者并没有系统学过JavaScript相关知识,本文只是对该echarts特定实例的代码内容做出注释,如有错误还望指正
x轴为time类型的数据格式
对于数据集中的数据,需要包装成如下形式,才可被识别
data:[{ name: time, value: [time, value] },
{ name: time, value: [time, value] },
...
]
假设某点数据为{name:2022-2-9,value:[2022-2-9,10]}
,其含义为时间为2022年2月9日时,其值为10
生成随机数据
源码1
2
3
4
5
6
7
8
9
10
11function randomData() {
now = new Date(+now + oneDay); //创建一个日期对象
value = value + Math.random() * 21 - 10; //初始化递增value值
return {
name: now.toString(),
value: [
[now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'),
Math.round(value)
]
};
}
return
的返回形式即为可被匹配的数据形式
Date()日期对象
- 创建方法
new Date()
- 实例化方式
1
2
3
4var d = new Date(); //返回当前时间
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds); - 常用对象方法
方法 | 描述 |
---|---|
getFullYear() | 返回年份 |
getMonth() | 返回月份(0-11) |
getDate() | 返回日期(1-31) |
getHours() | 返回小时(0-24) |
getMinutes() | 返回分钟(0-59) |
getSeconds() | 返回秒数(0-59) |
初始化静态数据
1 | let data = []; // 初始化空的数据集 |
- data:数据集,初始为空
- now:起始时间
- oneDay:循环中randomData()函数中时间每次的增量(单位:毫秒)
- value:初始化value值
- for循环:初始化1000个静态数据
randomData()
规定了每次时间增量为1天,value随机递增
option配置项
tooltip
1 | tooltip: { |
- 在列表中通过
params[0]
取到第一个字典值 (params
详解见下文) - 在函数中创建新变量
date
并通过字典取值方法初始化为该项数据的日期 return
的形式则为日/月/年:值
获取月份要加1的原因是返回值为0-11,也就是说1月的值为0,以此类推
setInterval()
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。1
2
3
4
5
6
7
8
9
10
11
12
13setInterval(function () {
for (var i = 0; i < 5; i++) {
data.shift(); // 删除data数组中的第一个元素
data.push(randomData()); // 在数组末尾添加新的元素
}
myChart.setOption({
series: [
{
data: data
}
]
});
}, 1000);
setInterval(function(),1000)
会不停调用其中的函数data.shift()
:去除data数组中的第一个元素data.push()
:在data数组末尾添加“递增的时间和随机的值(通过randomData()
实现)myChart.setOption()
更新表中data数据集
- 设置调用周期为1s(1000ms)
setInterval()方法
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式,相关语法如下
setInterval(code,millisec)