0

データのプッシュに問題があります。プロット(ダイグラフ)用のデータ(時間、温度、湿度)を用意したい。しかし、この1つのコード(以下を参照)で変数データを入力すると、グラフが表示されません。

for (var i = 0; i < time.length; i++){
  var t = new Date (time[i]);
  data.push(t);
  for(var n = 0; n < 2; n++){
    data.push([data_graph[n][i]]);
  }
}

しかし、1サイクルを残して、手動で多数の配列を書き込むと(以下を参照)、それは機能し、グラフが表示されます。

for (var i = 0; i < time.length; i++){
  var t = new Date (time[i]);
  data.push([t,data_graph[0][i],data_graph[1][i]]);
}

一時変数を使用することを思いつきましたが、成功しませんでした。

 for (var i = 0; i < time.length; i++){
   var data_temporary = [];
   var t = new Date (time[i]);
   for(var n = 0; n < 2; n++){
     data_temporary.push([data_graph[n][i]]);
   }
   data.push([t,data_temporary]);
 }

だから私の質問は...どこに問題があるのでしょうか?回答ありがとうございます。

4

3 に答える 3

1

はい、3つのコードスニペットは3つの異なるdata構造を生成します。

  1. [t, [datagraph…], [datagraph…], t, [datagraph…], [datagraph…], …]
  2. [[t, datagraph…, datagraph…], [t, datagraph…, datagraph…], …]
  3. [[t, [[datagraph…], [datagraph…]]], [t, [[datagraph…], [datagraph…]]], …]

ところで、1要素配列をプッシュすることが多すぎます。

したがって、ループによって生成されたstruc#2が必要な場合は、

for (var i=0; i<time.length; i++) {
    var t = new Date (time[i]);
    var temp = [t]; // or temp=[]; temp.push(t);
    for (var j=0; j<data_graph.length; j++) // or j<2 if that's certain
        temp.push(data_graph[j][i]);
    data.push(temp);
}
于 2012-10-21T11:30:00.000 に答える
0

time.length2番目の(作業中の)バージョンは、必要に応じて、それぞれが3つの要素を含む最初の次元の要素を持つ2次元配列を作成し[t, x, y]ます。

最初のバージョンでは、1次元配列を作成しています[t0, [x0], [y0], t1, [x1], [y1], ...]

time.length3番目のバージョンは機能しません。これは、最初の次元で要素を正しく作成しているのに、要素自体は[t, [[x], [y]]]であり、ではないため[t, x, y]です。

于 2012-10-21T11:28:31.167 に答える
0

push()を呼び出すたびに、data配列に新しい要素が作成されます。したがって、最初の例では、外側のforループの各反復で3つのオブジェクトを渡し、3番目の例では、時間と2つの値の配列で構成されるオブジェクトを渡します。ただし、dygraphスクリプトは、明らかに3つの要素で構成されるオブジェクトを想定しているため、2番目の例は機能します。

于 2012-10-21T11:32:15.480 に答える