flot - 显示没有间隙的时间轴

Dan*_*J F 12 jquery jquery-plugins flot

我正在尝试自定义jQuery Flot以消除时间轴上点之间的间隙.看看顶部图片:

破碎的flot

它显示了两天的数据,我打赌你发现了一夜.我想要做的是摆脱图表中间这个恼人的差距.有什么建议怎么做?

Dan*_*J F 10

太糟糕了,我不能接受评论作为答案,因为来自马克的链接的乔治罗伯茨的答案运作顺利.

所以我要做的是将flot的模式从'time'更改为null然后模拟时间轴.

我创建了两个数组:第一个包含图表数据,第二个包含时间戳:

for (var i=0; i<json.length; i++ ) {
    dotsData.push( [i, json[i].value] );
    ticks.push( json[i].date );
    }                       
}
Run Code Online (Sandbox Code Playgroud)

时间轴仿真:

// flot options
... xaxis: { tickFormatter: function(val) { return formTicks(val, ticks) } } ...

// formTicks function
function formTicks(val, ticksArr) {
    var tick = ticksArr[val];

    if ( tick != undefined ) {
        tick = new Date( tick );

        var hours = tick.getHours(),
            minutes = tick.getMinutes();

            tick = hours+':'+minutes;
    }
    else { tick = '' }

    return tick
}
Run Code Online (Sandbox Code Playgroud)

它解决了这个问题,但很难区分一天,所以我添加了标记:

var markings = [],
    firstDay = new Date( ticks[0] ).getDate();

    for (var i=1; i<ticks.length; i++) {
        var loopDay = new Date( ticks[i] ).getDate();
        if ( loopDay != firstDay ) {
            var marking = {
                color: '#000000',
                lineWidth: 1,
                xaxis: { from: i, to: i }
            }

        markings.push( marking )

        firstDay = loopDay; // loop through all days
    }
}

// flot options
grid: { markings: markings }
Run Code Online (Sandbox Code Playgroud)

结果:

好看的flot