0

他の投稿やグーグルで何かを見つけることができなかったので、そこに投稿しています。

http://jsfiddle.net/CUQaN/9/

JS フィドルでわかるように、各ポイントに円が付いた折れ線グラフがあります。このグラフを新しいデータで更新したい。問題は、グラフに既にあるポイントよりも少ないポイントまたは多いポイントを受け取ることができることです。たとえば、折れ線グラフで 8 ポイントを保持している場合、グラフを更新しているときは 4 ポイントまたは 15 ポイントしか保持できません。また、既に存在する円の値を変更しているだけなので、円が適切に更新されていません。しかし、それらを適切に更新する方法が本当にわかりません。

私は時々そのデータを持つことができます:

            var data = [
                {"date":"4-May-12","close":Math.random()*568.13,"open":Math.random()*35.12},
                {"date":"3-May-12","close":Math.random()*568.13,"open":Math.random()*35.12},
                {"date":"2-May-12","close":Math.random()*568.13,"open":Math.random()*35.12},
                {"date":"1-May-12","close":Math.random()*568.13,"open":Math.random()*35.12},
                {"date":"30-Apr-12","close":Math.random()*354.98,"open":Math.random()*424.56},
                {"date":"27-Apr-12","close":Math.random()*24.00,"open":Math.random()*253.89},
                {"date":"26-Apr-12","close":Math.random()*490.70,"open":Math.random()*215.54},
                {"date":"25-Apr-12","close":Math.random()*42.00,"open":Math.random()*351.23},
                {"date":"24-Apr-12","close":Math.random()*210.28,"open":Math.random()*20.23},
                {"date":"23-Apr-12","close":Math.random()*20.70,"open":Math.random()*368.34},
                {"date":"20-Apr-12","close":Math.random()*412.98,"open":Math.random()*42},
                {"date":"19-Apr-12","close":Math.random()*26.44,"open":Math.random()*20.56},
                {"date":"18-Apr-12","close":Math.random()*48.34,"open":Math.random()*356.45},
                {"date":"17-Apr-12","close":Math.random()*26.44,"open":Math.random()*20.56},
                {"date":"15-Apr-12","close":Math.random()*48.34,"open":Math.random()*356.45},
            ];

それ以外の場合は、そのデータだけです:(多かれ少なかれ)

            var data = [
                {"date":"4-May-12","close":Math.random()*568.13,"open":Math.random()*35.12},
                {"date":"3-May-12","close":Math.random()*568.13,"open":Math.random()*35.12},
                {"date":"2-May-12","close":Math.random()*568.13,"open":Math.random()*35.12},
                {"date":"1-May-12","close":Math.random()*568.13,"open":Math.random()*35.12},
                {"date":"30-Apr-12","close":Math.random()*354.98,"open":Math.random()*424.56},
            ];

誰かが私を助けてくれますか?

どうもありがとう !

4

1 に答える 1

0

移動するよりも、古いポイントを削除して新しいポイントを追加する方がよい場合があります。これを行うには、id 関数を使用してポイントを一意にすることができます -ここを参照してください

小さな例:

svg.selectAll("circle")
    .data(myData, function(d) { return d.x; })
    .enter()
    .append("circle");

ここで重要な点は、データ ポイント配列内のインデックスではなく、x 値によってポイントが識別されることです。実際、ポイントは上下にのみ移動し、左右には移動しないため、これは現在の状況で役立つ場合があります。

于 2013-07-24T12:45:14.763 に答える