在D3.js中舍入日期比例的最简单方法

imr*_*ane 2 javascript d3.js

我在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}
]
Run Code Online (Sandbox Code Playgroud)

它是一个人为的例子,但基本上在这种情况下将域名限制在1月份.寻找一个简单的d3esque解决方案.

Bil*_*ill 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);
Run Code Online (Sandbox Code Playgroud)

您可以在http://bl.ocks.org/3849376上看到此示例.