在数据末尾忽略空值的Flot

时间:2013-07-23 13:30:33

标签: flot

我正在使用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,产生以下结果:

JSFiddle of 0.8.1

有趣的是,使用旧版本的Flot(0.7),这会产生我期望的图形类型,空项呈现为间隙:

JSFiddle of 0.7

在0.8.1中,如果我在末尾添加一个非空项,则空条目显示为间隙,但这与0.7的不同行为无论何时呈现它们(以及我正在尝试的行为)实现)。

是否需要更改设置或其他内容以实现此目的?

2 个答案:

答案 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) {

我会在完成测试后立即将修复程序推送到主程,以确保不会破坏其他任何内容。