ECharts关于“动态数据+时间坐标轴”的问题

下面ECharts上的Demo代码
function randomData() {
    now = new Date(+now + oneDay);
    value = value + Math.random() * 21 - 10;
    return {
        name: now.toString(),
        value: [
            [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'),
            Math.round(value)
        ]
    }
}

var data = [];
var now = +new Date(1997, 9, 3);
var oneDay = 24 * 3600 * 1000;
var value = Math.random() * 1000;
for (var i = 0; i < 1000; i++) {
    data.push(randomData());
}

option = {
    title: {
        text: '动态数据 + 时间坐标轴'
    },
    tooltip: {
        trigger: 'axis',
        formatter: function (params) {
            params = params[0];
            var date = new Date(params.name);
            return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];
        },
        axisPointer: {
            animation: false
        }
    },
    xAxis: {
        type: 'time',
        splitLine: {
            show: false
        }
    },
    yAxis: {
        type: 'value',
        boundaryGap: [0, '100%'],
        splitLine: {
            show: false
        }
    },
    series: [{
        name: '模拟数据',
        type: 'line',
        showSymbol: false,
        hoverAnimation: false,
        data: data
    }]
};

app.timeTicket = setInterval(function () {

    for (var i = 0; i < 5; i++) {
        data.shift();
        data.push(randomData());
    }

    myChart.setOption({
        series: [{
            data: data
        }]
    });
}, 1000);
我们把这段代码拷贝过来时,并没有实现如他所展示的折线动态显示效果

下面是笔者修改过后的代码(红色代码是和demo不一样的地方)

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="utf-8">  
    <title>ECharts</title>  
    <!-- 引入 echarts.js -->  
    <script src="js/jquery-1.8.0.js"></script>  
    <script type="text/javascript" src="echarts.common.min.js" ></script>
</head>  
<body>  
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->  
    <div id="main" style="width: 600px;height:400px;"></div>  
    <script type="text/javascript">  
        // 基于准备好的dom,初始化echarts实例  
        var myChart = echarts.init(document.getElementById('main'));//定义折线图显示的位置对象
        function randomData() {  
            now = new Date(+now + oneDay);  
            value = value + Math.random() * 21 - 10;  
            return {  
                name: now.toString(),  
                
                value: [  
                    [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'),  
                    Math.round(value)  
                ]  
                 
            }  
        }  
          
        var data = [];  
        var now = +new Date(1997, 9, 3);  
        var oneDay = 24 * 3600 * 1000;  
        var value = Math.random() * 1000;  
        for (var i = 0; i < 1000; i++) {  
            data.push(randomData());  
        }  
          
        option = {  
            title: {  
                text: '动态数据 + 时间坐标轴'  
            },  
            tooltip: {  
                trigger: 'axis',  
                formatter: function (params) {  
                    params = params[0];  
                    var date = new Date(params.name);  
                    return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];  
                },  
                axisPointer: {  
                    animation: false  
                }  
            },  
            xAxis: {  
                type: 'time',  
                splitLine: {  
                    show: false  
                }  
            },  
            yAxis: {  
                type: 'value',  
                boundaryGap: [0, '100%'],  
                splitLine: {  
                    show: false  
                }  
            },  
            series: [{  
                name: '模拟数据',  
                type: 'line',  
                showSymbol: false,  
                hoverAnimation: false,  
                data: data  
            }]  
        };  
          
       setInterval(function () {  
          
            for (var i = 0; i < 5; i++) {  
                data.shift();  
                data.push(randomData());  
            }  
           myChart.setOption(option);
        }, 1000);  
    </script>  
</body>  
</html> 
改过这些地方,Demo就可以运行了

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
您好,关于echarts时间曲线图和折线图动态x轴及数据问题,我可以为您提供一些参考。 1. 时间曲线图 时间曲线图可以使用 echarts 的 line 和 time-line 组件实现。其中,line 组件用于绘制折线图,time-line 组件用于控制时间轴。 具体实现步骤如下: 1)引入 echarts 库和主题 ```html <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.0/echarts.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.0/theme/dark.js"></script> ``` 2)创建 echarts 实例 ```javascript var myChart = echarts.init(document.getElementById('main'), 'dark'); ``` 3)配置图表选项 ```javascript var option = { // 设置图表标题 title: { text: '时间曲线图', left: 'center' }, // 设置图表的工具箱 toolbox: { show: true, feature: { dataZoom: { yAxisIndex: 'none' }, restore: {}, saveAsImage: {} } }, // 设置时间轴 timeline: { axisType: 'category', data: ['2010', '2011', '2012', '2013', '2014', '2015', '2016'], autoPlay: true, playInterval: 1000, left: '10%', right: '10%', bottom: '3%', width: '80%', label: { color: '#999' }, controlStyle: { showPrevBtn: true, showNextBtn: true, normal: { color: '#999' }, emphasis: { color: '#666' } }, checkpointStyle: { symbol: 'circle', symbolSize: 8, color: '#666', borderWidth: 2, borderColor: '#666' }, itemStyle: { normal: { color: '#666' }, emphasis: { color: '#666' } } }, // 设置坐标轴 xAxis: { type: 'time', splitLine: { show: false }, axisLine: { lineStyle: { color: '#999' } } }, yAxis: { type: 'value', splitLine: { show: false }, axisLine: { lineStyle: { color: '#999' } } }, // 设置数据 series: [{ name: '数据1', type: 'line', data: [ ['2010-01-01', 100], ['2011-01-01', 200], ['2012-01-01', 300], ['2013-01-01', 400], ['2014-01-01', 500], ['2015-01-01', 600], ['2016-01-01', 700] ] }, { name: '数据2', type: 'line', data: [ ['2010-01-01', 200], ['2011-01-01', 300], ['2012-01-01', 400], ['2013-01-01', 500], ['2014-01-01', 600], ['2015-01-01', 700], ['2016-01-01', 800] ] }] }; ``` 4)将配置项设置到 echarts 实例中 ```javascript myChart.setOption(option); ``` 2. 折线图动态x轴及数据 折线图动态x轴及数据可以通过 echarts动态更新数据的方法实现。具体实现步骤如下: 1)定义一个空的数组变量 ```javascript var data = []; ``` 2)使用定时器动态更新数据 ```javascript setInterval(function () { // 获取当前时间 var now = new Date(); // 将当前时间转换为字符串 var time = [now.getHours(), now.getMinutes(), now.getSeconds()].join(':'); // 生成随机数 var value = Math.random() * 1000; // 将时间数据添加到数组中 data.push({ name: time, value: value }); // 控制数据长度不超过50个 if (data.length > 50) { data.shift(); } // 更新图表数据 myChart.setOption({ series: [{ data: data }] }); }, 1000); ``` 以上就是关于 echarts 时间曲线图和折线图动态x轴及数据的简单介绍和实现方法,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尤成军军军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值