0

当我开始使用范围选择器时,Dygraphs 中的范围选择器将 x 轴的起始值乘以 10(默认情况下,加载页面后 x 轴是正确的)。例如,我的第一个 x 轴值为 1 -> 范围选择器从 10 开始(5 -> 从 50 开始)。数据采用 JSON 格式,并且在没有范围选择器的情况下正确显示。我该如何解决或解决这个问题?

这是 dygraph.com/fiddle jsfiddle中的代码 我无法显示 JSON 解析,所以我输入了我在浏览器的源代码中看到的 JSON。(它以 10 开头,但在我的数据库中,它以 1 开头。图表在 x 轴上显示 10,但在我移动范围选择器之前显示 1 的 y 值)

//THIS IS THE JSON THAT I SEE IN SOURCE CODE: 
var datenausdb = '[["10","100.0000","101.0000","100.0000"],["11","105.0000","99.0000","100.0000"],["12","104.0000","101.0000","102.0000"],["13","105.0000","102.0000","102.0000"]]';

var datenausdbA = JSON.parse(datenausdb);

$(window).load(function () {

    g = new Dygraph(
    document.getElementById("div1"),
    datenausdb, {
        title: '%Performance',
        showRangeSelector: true,
        rangeSelectorHeight: 50,
    });

});

但是当我手动操作 JSON 时也会发生这种情况

var datenausdb = '[["1","100.0000","101.0000","100.0000"],["2","105.0000","99.0000","100.0000"],["3","104.0000","101.0000","102.0000"],["4","105.0000","102.0000","102.0000"]]'; 

1显示在x轴上。当我移动选择器时,它变为 10 并且图表中不再显示任何内容

4

1 回答 1

1

我想发布我的问题的完整解决方案,这是由于 Dan 提到的字符串。

我还不得不改变日期。这个有效:

var datenausdb = [
["2013-08-05","100.0000","100.0000","99.9700"],
["2013-08-06","100.0000","101.0000","100.5000"],
["2013-08-07","101.1200","101.1200","101.1000"],
["2013-08-08","100.0100","100.0100","100.0100"],
["2013-08-09","99.9700","99.9700","99.9700"],
["2013-08-12","100.0000","100.0000","100.0000"],
["2013-08-13","101.0000","101.0000","102.0000"],
["2013-08-14","101.1200","101.1200","102.5000"],
["2013-08-15","100.0100","100.0100","100.0100"],
["2013-08-16","99.9700","99.9700","99.9700"],
["2013-08-19","100.5000","100.5000","100.5000"],
["2013-08-20","101.1000","101.1000","101.1000"],
["2013-08-21","102.0000","102.0000","99.9700"]
]; 


for (var k = 0; k < datenausdb.length; k++){
datenausdb[k][0] = new Date(datenausdb[k][0]); 
}

for (var i = 0; i < datenausdb.length; i++){
for (var j = 1; j < datenausdb[i].length; j++) {
datenausdb[i][j] = parseFloat(datenausdb[i][j]);
}
}

$(document).ready(function () {

   g1 =  new Dygraph( 
            document.getElementById("div1"),
            datenausdb, 
        {
        showRangeSelector: true,
        rangeSelectorHeight: 50,
          }
            );
 }
 );

这是jsFiddle

于 2013-09-07T22:08:42.893 回答