(Dygraphs JS)如何禁用NaN点的图例突出显示?

时间:2014-08-25 02:24:01

标签: javascript dygraphs

我有一个带有移动传奇的Dygraph.js"快照"到最近的点。无论如何,这是所期望的行为。

如果我使用值(下面)传递数据,那么我会得到所需的行为。突出显示回调(我认为)会使图例与(time_1,1.5)(time_4,1.6)中的值对齐,但会忽略time_2和time_3:< / p>

time_1,1.5
time_2,
time_3,
time_4,1.6

但如果我有这样的数据( NaN 值),那么图例实际上会在time_2和time_3处捕捉到不存在的点,并且很难突出显示拥挤数据集中的点:

time_1,1.5
time_2,NaN
time_3,NaN
time_4,1.6

问题是,我需要支持 没有值和 NaN 值,以便控制数据如何指向使用connectSeparatedPoints连接。我希望完全禁用所有点的图例捕捉/突出显示行为,除非它们具有明确的真实非NaN值。

highlightCallback / unhighlightCallback是实现此目的的正确方法还是其他内容?

1 个答案:

答案 0 :(得分:0)

禁用图例的方法是在第一个系列格式化程序中抛出异常。当第二个系列的值为NaN时抛出异常将避免传说捕捉这些点。

这可以使用第一个系列格式化程序来完成:

function(val, opts, seriesName, dygraph, row, col) {
    // raise an exception if the second series value is NaN 
    if (isNaN(dygraph.getValue(row, 1))) { 
        throw "disable legend for NaN" 
    } 
    return val; 
}

此片段表示使用此格式化程序的简短示例:

&#13;
&#13;
var data = "x,y\n"
           +"0,1.5\n"
           +"1,1.5\n"
           +"2,NaN\n"
           +"3,NaN\n"
           +"4,1.6\n"
           +"5,1.1\n";

new Dygraph(document.getElementById("graph"), data, {height:200,
        axes: {
          x: {
            valueFormatter: function(val, opts, seriesName, dygraph, row, col) { 
                if (isNaN(dygraph.getValue(row, 1))) { 
                  throw "disable legend for NaN" 
                } 
                return val; 
            }
          }
       }
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/dygraph/1.1.1/dygraph-combined.js"></script>
<div id="graph" />
&#13;
&#13;
&#13;