javascript flot动态数据值的阈值

时间:2014-09-26 05:22:41

标签: javascript graph flot

这是我的情节数据

var data = [{
                data: [[4, 80], [8, 50], [9, 130]],
                color: "rgb(30, 180, 20)",
                threshold: {
                    below: 100,
                    color: "rgb(200, 20, 30)"
                }
            }]
        var bar = $.plot("#placeholder", data);

如果我更改按钮中的数据值,请单击

     data= [[4, 130], [8, 50], [9, 130]];
     bar.setData([data]);
              bar.draw();

              });

如果有办法实现这一点,那么阈值就不起作用了。

2 个答案:

答案 0 :(得分:1)

您没有正确更新数据。你最初给flot一个带有阈值设置的系列对象,当你setData时,你给它一个没有这些设置的数组。

执行此操作以保留系列选项:

someData = somePlot.getData();
someData[0].data = [[4, 130], [8, 50], [9, 130]];
somePlot.setData(someData);
somePlot.draw();

这是一个example

<强> EDITS

如果您不喜欢getData调用,请将您的主数据变量保留在范围内并更新为@Raidri暗示:

var masterData = [{
            data: [[4, 80], [8, 50], [9, 130]],
            color: "rgb(30, 180, 20)",
            threshold: {
                below: 100,
                color: "rgb(200, 20, 30)"
            }
        }]

 // later ...

 masterData[0].data = [[4, 130], [8, 50], [9, 130]];
 somePlot.setData(masterData);
 somePlot.draw();

重要的一点是在setData来电中保留您的阈值系列选项。

答案 1 :(得分:0)

您是否尝试在bar.setupGrid()之前调用bar.draw()

如果这没有用,你可以制作一个全新的情节:

data[0].data = [[4, 130], [8, 50], [9, 130]];
bar = $.plot("#placeholder", data)