0

次のデータがあります。

   parseDate = d3.time.format("%Y").parse,
   format = d3.time.format("%Y");

  var myData = [
   { dataField: "A", coords: [
    {xCoord: parseDate('1990') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1991') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1992') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1993') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1994') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1995') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1996') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1997') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1998') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1999') , yCoord: Math.random() * 100}
    ]
  },
  { dataField: "B",coords: [
    {xCoord: parseDate('1990') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1991') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1992') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1993') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1994') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1995') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1996') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1997') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1998') , yCoord: Math.random() * 100},
    {xCoord: parseDate('1999') , yCoord: Math.random() * 100}
    ]
  }

d3を使用して折れ線グラフを作成しようとしています。さらに、私はコードを持っています:

    var data = function (d) { return d.coords; };
    var xValue = function (d) { return d.xCoord; };
    var yValue = function (d) { return d.yCoord; };

私は自分のスケールをそのように作成しています:

    xScale = d3.time.scale()
      .domain([new Date(1988,10,30),new Date(2000,01,30)])
      .range([margin.left, 600 - margin.right]);

ただし、私の目標は、ドメインが最小の年から最大の年になるように調整することです (または、各方向に余分な年を延長することさえできます)。しかし、これまでのところ、私は成功していません。私は使用しようとしました

    .domain(d3.extent(data, xValue)); 

しかし、運がありませんでした。私は JavaScript にかなり慣れていないので、私の苦労はデータの保存方法にあると思います。どんなアイデアでも素晴らしいでしょう。

4

1 に答える 1

0

組み込みの d3.extent 関数を使用して、配列の最小値と最大値を取得できます。配列とオプションのアクセサ関数を取ります。最小値と最大値の 2 つの値の配列を返します。

[min, max]

私は試してみます

xScale.domain(d3.extent(myData[0].coords, function(d) {return d.xCoord; }));

次に、すすぎ、他のデータラベルについて繰り返しforます。さまざまなデータセットがたくさんある場合は、ループで実行できます。

于 2013-06-13T18:15:18.593 に答える