0

(この場合) yscale のドメインをこのように配置すると、スケールに関して非常に奇妙な問題が発生します。 .domain([0, d3.max(dataset, function (d) { return d.ycoord; })])

半分しか表示されていないように、軸が間違って設定されています。奇妙なことに、これを解決するために、しばらく試してから、次のように / 1 を最後に付けました。

.domain([0, d3.max(dataset, function (d) { return (d.ycoord / 1); })])

そして、これらのスクリーンショットのように、軸が正しく表示されました ここに画像の説明を入力

ここに画像の説明を入力

また、ここには jsfiddle の完全なコードがあります: jsfiddle リンク

だから私の質問は、なぜこのように振る舞うのですか? 私はこれについて本当に無知で、誰かがこれを解決できるかどうか疑問に思っていました!

4

1 に答える 1

0

問題は、数値 ( ) として解釈しているものはycoord、CSV から直接取得されるため、実際には文字列であることです。つまり、140 の代わりに "140" があり、文字列としては実際には "95" よりも小さいです。そのため、スケールの決定された最大値は正しくありません。実際に数値を必要とする D3 関数 (scale 関数など) は、与えられた文字列を暗黙的に数値に変換するため、エラー メッセージは表示されません。

これを修正するには、他の操作を行う前に文字列を数値に変換するだけです。

dataset.forEach(function(d) { d.ycoord = +d.ycoord; });
于 2013-10-09T15:53:37.960 に答える