2

私はd3に日付スケールを持っており、 x.domain()[0] を月の初日に、 x.domain()[1] を月の最後の日に制限しようとしています。データセットが次のようなものであると仮定します

data : [
{date: '2011-12-31', amount: 200},
{date: '2012-01-01', amount: 100},
{date: '2012-01-02', amount: 300},
{date: '2012-01-03', amount: 400},
{date: '2012-02-01', amount: 400}
]

これは不自然な例ですが、基本的にこのシナリオでは、ドメインを 1 月に制限します。簡単な d3esque ソリューションを探しています。

4

1 に答える 1

5

あなたが探しているのは.nice()、ドメインを適切な値(あなたの場合は月の最初と最後)で開始および終了させる関数だと思います。それでもデータをフィルタリングする必要があります。この場合は1月を表示するか、12月または2月を表示するかを自動的に決定する魔法はないと思います。

var data = [
    {date: new Date(2011,11,31), amount: 200},
    {date: new Date(2012,0,1), amount: 100},
    {date: new Date(2012,0,2), amount: 300},
    {date: new Date(2012,0,3), amount: 400},
    {date: new Date(2012,1,1), amount: 400}
];

var month = data.filter(function (d) { return d.date.getMonth() === 0; });

var x = d3.time.scale()
    .domain(d3.extent(month, function(d) { return d.date; }))
    .range([0, width])
    .nice(d3.time.month);

この例はhttp://bl.ocks.org/3849376で見ることができます。

于 2012-10-07T20:37:48.150 に答える