4

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

0.8.1 的 JSFiddle

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

0.7的JSFiddle

在 0.8.1 中,如果我在末尾添加一个非 null 项,则 null 条目将显示为一个间隙,但这与 0.7 不同的行为,无论它们被渲染(这是我试图实现的行为) .

是否有设置或我需要更改以实现此目的?

4

2 回答 2

3

这可能是一个错误。我建议你在他们的github 页面上提出问题。

如果您需要解决它,您可以制作第二个未显示的系列,并用 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/

于 2013-07-23T15:38:31.870 回答
3

从此更改第 1134 行:

if (f.autoscale) {

对此:

if (f.autoscale !== false) {

我会在完成测试后立即将修复推送到 master 以确保这不会破坏其他任何东西。

于 2013-07-24T21:23:45.640 回答