Incubator-echarts: 时间轴的使用,对显示时间的最小单位的配置的问题。

Created on 12 Jun 2017  ·  2Comments  ·  Source: apache/incubator-echarts

One-line summary [问题简述]

想做一个设备状态日志折线图,我数据库里有时间数据,希望可以按照最小按照秒显示状态,但是没找到有这方面的配置,目前好像只是按照天为单位显示

Version & Environment [版本及环境]

  • ECharts version [ECharts 版本]:echart3
  • Browser version [浏览器类型和版本]:
  • OS Version [操作系统类型和版本]:win10

Expected behaviour [期望结果]

希望可以按照数据库的时间到秒(或者分钟)显示,用时间轴显示时间跨度

ECharts option [ECharts配置项]


option = {
title: {
            text: '设备状态日志折线图'
        },
        tooltip: {
            trigger: 'axis'
        },
        legend: {
            data:['设备状态']
        },
        grid: {
            left: '4%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        },
        xAxis: {
            type: 'time'
        },
        yAxis: {
            type: 'value'
        },
        series: [
            {
                name:'设备状态',
                type:'line',
                stack: '状态',
                data:[
                        ['2015-12-05 20:00:01'',0],
                        ['2015-12-05 21:00:02',0],
                        ['2015-12-05 23:00:03',0],
                        ['2016-01-05 22:00:04',1],
                        ['2016-01-05 23:01:05',1],
                        ['2016-01-05 23:06:06',1],
                        ['2016-02-05 23:00:12',1],
                        ['2016-02-05 23:00:13',1],
                        ['2016-02-05 23:00:15',1],
                        ['2017-03-05 23:00:55',1]
                        ]
            }
        ]
}

Other comments [其他信息]


qq 20170612111400

new-feature axis-time

Most helpful comment

这是官方DEMO 动态数据 + 时间坐标轴 上的一个修改 ,可以满足秒级需求的使用。
简单来说就是X轴选择类目轴,X轴的data传入一个额外的数组(例如date),原始的data构造成对象(为了tooltip构造方便)。动态更新的时候,date数组中传入data对象的第一个值。具体看下面修改过的代码和运行效果图(因为是1000份刻度,所以显示间隔不是秒间隔,但鼠标移上去显示的tooltip是可以看出是秒级的)。

代码

function randomData() {
    var now = new Date();
    value = value + Math.random() * 21 - 10;
    return {
        value: [
            [now.getHours(), now.getMinutes(), now.getSeconds()].join(':'),
            Math.round(value)
        ]
    }
}

var data = [];
var date = [];
var value = Math.random() * 1000;
for (var i = 0; i < 1000; i++) {
    data.push(randomData());
    date.push('')
}

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

setInterval(function () {
    var _data = randomData();
    data.shift();
    date.shift();
    data.push(_data);
    date.push(_data.value[0])

    myChart.setOption({
        xAxis: {
          data: date  
        },
        series: [{
            data: data
        }]
    });
}, 1000);

图片

echart

All 2 comments

这是官方DEMO 动态数据 + 时间坐标轴 上的一个修改 ,可以满足秒级需求的使用。
简单来说就是X轴选择类目轴,X轴的data传入一个额外的数组(例如date),原始的data构造成对象(为了tooltip构造方便)。动态更新的时候,date数组中传入data对象的第一个值。具体看下面修改过的代码和运行效果图(因为是1000份刻度,所以显示间隔不是秒间隔,但鼠标移上去显示的tooltip是可以看出是秒级的)。

代码

function randomData() {
    var now = new Date();
    value = value + Math.random() * 21 - 10;
    return {
        value: [
            [now.getHours(), now.getMinutes(), now.getSeconds()].join(':'),
            Math.round(value)
        ]
    }
}

var data = [];
var date = [];
var value = Math.random() * 1000;
for (var i = 0; i < 1000; i++) {
    data.push(randomData());
    date.push('')
}

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

setInterval(function () {
    var _data = randomData();
    data.shift();
    date.shift();
    data.push(_data);
    date.push(_data.value[0])

    myChart.setOption({
        xAxis: {
          data: date  
        },
        series: [{
            data: data
        }]
    });
}, 1000);

图片

echart

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Was this page helpful?
0 / 5 - 0 ratings