0

私はHighcharts(特定のデモへのリンク-[表示オプション]をクリックして以下のコードを比較)を使用して、個人使用のためにいくつかのデータをレンダリングしています。

[注:これはほぼ間違いなく私に関連するエラーなので、Highchartsに問題があるとほのめかすつもりはありません。これは本当に素晴らしいAPIです!]

チャートオブジェクトのseries.dataフィールドを設定すると、奇妙な配列セクショニングが発生します。

たとえば、これは正常に機能します。

series: [{
    name: 'seriesName',
    data: [22, 24, 15]
}]

そして、3つのデータポイントが値22、24、および15でプロットされます。

でも、

series: [{
    name: 'sillySeries',
    data: chartData[0]
}]

値2、4、および5で3つのポイントをレンダリングし、ポイントのタイトルはそれぞれ2、2、および1です...つまり、配列エントリをタイトルに分割し、次に2桁の数値の値に分割します。

console.logは、chartDataが次のようになっていることを示しています

22,24,15,2010-9,2010-10,2010-11 

(3か月で3つの値)

実際の配列は[22,24,15][2010-9,2010-10,2010-11]に似ていますが

私の2D配列にchartData[][][column][row]データのインデックスがあり、要求するchartData[0]と配列が返されると考えました。

おそらく私の質問は次のようになります:javascriptオブジェクトのプロパティ/値を設定するために2D配列表現から1D配列を返すにはどうすればよいですか?私はおそらく非常に明白な何かを見落としているようです。


編集:

data: [24]

24で1ポイントをプロットします。

data: '24'

データをタイトル、次に値として分割し、24ではなく4でポイントを効果的にプロットします。

したがって、配列をデータフィールドに渡そうとすると、表現は文字列になります。string.toArrayのようにできる方法はありますか?


編集2:

chartData[col][row]空の配列として宣言されています

var chartData = [];

その後、HTMLテーブルの行と列を反復処理して値を入力します。ここで、最も内側のループの内容は次のようになります。

chartData[cellIndex][rowIndex] = $(currentCell).text();
4

3 に答える 3

2

chartDataはおそらく配列ですが、chartData[0]は文字列のように聞こえます。文字列に配列インデックスを使用すると、その位置に文字が表示されます。これはまさにあなたが経験していることです...

値2、4、および5で3つのポイントをレンダリングし、ポイントのタイトルはそれぞれ2、2、および1です...つまり、配列エントリをタイトルに分割し、次に2桁の数値の値に分割します。

javascriptの配列内に配列を定義する方法はたくさんあります。ここに1つあります:

var chartData = [
  [22,24,15]
  ,['2010-9','2010-10','2010-11']
];
于 2010-12-22T22:32:38.147 に答える
2

parseInt() はその日を救った。

何かのようなもの

for (i=0; i<chartData[0].length; ++i) {
    columnOne.push(parseInt(chartData[0][i]);
}

オブジェクト表記のデータフィールドでデータを表示するために使用できる配列をくれました

data: columnOne

またはより文字通り

chart1.series[0].data = columnOne;

ジェームズさん、ご指摘ありがとうございます

chartData はおそらく配列ですが、chartData[0] は文字列のように聞こえます。

これにより、配列内のデータが実際にはすべて文字列であることがわかりました。一部のフィールドは文字列であり、一部は日付 (YYYY-MM-DD) であり、一部は単なる int であるため、この方法を維持しました。

お二人ともありがとうございました=)

于 2010-12-27T21:18:50.840 に答える
1

まあ、これは本当の答えではありませんが、あなたを助けるかもしれません.

ハイチャートでは、特定のオプションを前処理できます。あなたの場合、次のようなことができます:

options.series[0].data = new Array(1, 0, 4);

ドキュメント参照: http://www.highcharts.com/documentation/how-to-use#options

これが失敗した場合は、上記にコメントしてください。

于 2010-12-22T21:58:35.123 に答える