我正在使用Flot构建图表,并且忽略数据集合末尾的空项目。
我的代码如下:
var d1 = [];
for (var i = 0; i <= 3; i += 1)
d1.push([i, parseInt(Math.random() * 30)]);
for (var i = 4; i <= 10; i += 1)
d1.push([i, null]);
function plotWithOptions() {
$.plot($("#placeholder"), [d1], {
series: {
bars: {
show: true
}
}
});
}
plotWithOptions();</code>
使用Flot 0.8.1,产生以下结果:
有趣的是,使用旧版本的Flot(0.7),这会产生我期望的图形类型,空项呈现为间隙:
在0.8.1中,如果我在末尾添加一个非空项,则空条目显示为间隙,但这与0.7的不同行为无论何时呈现它们(以及我正在尝试的行为)实现)。
是否需要更改设置或其他内容以实现此目的?
答案 0 :(得分:3)
这可能是一个错误。我建议你在github page上提交一个问题。
如果你需要解决它,你可以制作一个未显示的第二个系列,并用0填充值而不是null:
for (var i = 0; i <= 3; i += 1) {
d1.push([i, parseInt(Math.random() * 30)]);
d2.push([i, 0]);
}
for (var i = 4; i <= 10; i += 1) {
d1.push([i, null]);
d2.push([i, 0]);
}
然后当您致电$.plot
时,请使用显示d1
栏的选项,但d2
不显示任何栏:
$.plot($("#placeholder"), [{
data: d1
}, {
bars: {
show: false
},
lines: {
show: false
},
data: d2
}], {
series: {
bars: {
show: true
}
}
});
您的代码中的工作示例:http://jsfiddle.net/ryleyb/YWPqS/2/
答案 1 :(得分:3)
从此处更改第1134行:
if (f.autoscale) {
对此:
if (f.autoscale !== false) {
我会在完成测试后立即将修复程序推送到主程,以确保不会破坏其他任何内容。