我正在尝试自定义jQuery Flot以消除时间轴上点之间的间隙。看看顶部图片:
它显示了两天的数据,我打赌你发现了一夜。我想要做的是摆脱图表中间这个恼人的差距。有什么建议怎么做?
答案 0 :(得分:10)
太糟糕我不能接受评论作为答案,因为来自Mark Roberts的回答很顺利。
所以我要做的就是将flot的模式从'time'更改为null,然后模拟时间轴。
我创建了两个数组:第一个包含图表数据,第二个包含时间戳:
for (var i=0; i<json.length; i++ ) {
dotsData.push( [i, json[i].value] );
ticks.push( json[i].date );
}
}
时间轴仿真:
// 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
}
它解决了这个问题,但很难区分一天,所以我添加了标记:
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 }
结果:
答案 1 :(得分:0)
使用转换和inverseTransform
,这是为此类情况而设计的。请参阅FLOT文档的以下部分。
“transform”和“inverseTransform”是您可以放入的回调 改变数据的绘制方式。你可以设计一个功能 非线性地压缩或扩展轴的某些部分,例如, 抑制周末或用对数或一些压缩远点 其他方式。当Flot绘制绘图时,首先输入每个值 变换函数。这是一个例子,可以转动x轴 使用以下代码进入自然对数轴:
xaxis: {
transform: function (v) { return Math.log(v); },
inverseTransform: function (v) { return Math.exp(v); }
}