jQuery flot绘制带有时间序列数据的实时线图

时间:2014-07-03 01:36:23

标签: jquery flot linechart

  1. totalPoints = 300
  2. 我的数据集格式就像这[[new Date()。getTime(),Math.random()* 100],...]
  3. 每次更新数据集,dataset.shift(),dataset.push([新数据])
  4. 我是javascript的新手,我的问题是:   1.当设置xaxis {mode:" time"}(导入jquery.flot.time.js)的选项时,它甚至不会绘制任何点。   2.当xaxis选项仅为{show:true}时,它会绘制一个从左到右缺失的图表,但实际上数据正在刷新(移位和推送正确),而不是更新,如从右移动到写入。   3. http://www.pureexample.com/ExampleTesterII-123.html这个网站给了一个演示,但是我不能在本地运行它(我确定导入了相同的js,css,html文件),如果有人在本地运行它请告诉我。

    谢谢,伙计们。

    以下是我一直在使用的一些代码。

    var data = [],
        totalPoints = 100;
    var updateInterval = 30;
    var now = new Date().getTime();
    var dataset;
    
    function getMyData(){
        data.shift();
        while( data.length < totalPoints){
            var y = Math.random() * 100;
            data.push([now += updateInterval, y]);
        }
        return data;
    }
    
    var option;
    option = {
        series: {
            shadowSize: 0,  // Drawing is faster without shadows
            lines: {
                show: true,
                lineWidth: 1.2,
                fill: true
            }
        },
        yaxis: {
            min: 0,
            max: 100,
            tickFormatter: function (v, axis) {
                if (v % 10 == 0) {
                    return v + "%";
                } else {
                    return "";
                }
            }
        },
        xaxis: {
            show: true,
            mode: "time",
            tickSize: [2, "second"],
            tickFormatter: function (v, axis) {
                var date = new Date(v);
    
                if (date.getSeconds() % 20 == 0) {
                    var hours = date.getHours() < 10 ? "0" + date.getHours() :     date.getHours();
                    var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
                    var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
    
                    return hours + ":" + minutes + ":" + seconds;
                } else {
                    return "";
                }
            }
        }};
    
    $(document).ready(function(){
        data = getMyData();
    
        var plot = $.plot("#placeholder", [{label: "Label", data: data}], option);
        plot.draw();
    
        function update(){
            plot.setData([getMyData()]);
            plot.draw();
    
            setTimeout(update, updateInterval);
        }
    
        update();
    });
    

0 个答案:

没有答案