2012-12-05 122 views
0

我收到了客户对于项目burndown图表使用折线图的请求。问题是他们希望x轴上的日期以特定的方式格式化。mmm dd-dd/yy(例如11月18-24/12)其中18-24是一周(从第18天到第24天)。有没有可能在D3中创建一个自定义的日期格式,如果不是最好的方式来完成这一点?d3自定义日期格式

回答

-1

我又可以在d3.v2.js文件中创建自己的格式说明 “%o” 的

o: function(d) { 
    var weekInSeconds = 6 * 86400000; 
    var eowDate = new Date(d.getTime() + weekInSeconds); 
    return d3_time_zfill2(eowDate.getDate()); 
}, 

左右线6824。不是最干净的实现,但它的工作原理。

+1

有几种方法可以创建自己的日期格式函数,而无需编辑d3.js代码本身(我在答案中显示了两种方法)。这样做是绝对不推荐。如果您将来更新d3,则会失去此功能,这可能会意外破坏您的应用。 – Bill

+0

在你的例子中是“L”自定义格式说明符? – user1441287

+0

由于您似乎只有一个刻度格式,因此我只会使用与我在回复中发布的代码类似的代码。只需根据传入'customDateFormat'的日期返回所需的字符串即可。 – Bill

0

是的,这是可能的。见the documentation on d3.time.format

+0

我之前在看,并没有看到一个说明符,它可以帮助我实现日期格式的开始和结束日期要求(18-24)。 – user1441287

+0

您需要分两部分来完成此操作 - 一种格式用于开始部分(月份日期),并采用星期开始日期和格式,以一周结束并生成(日/年)。据我所知,没有什么能够给你开箱即用的东西。 –

0

我已经使用javascript对日期进行排序/格式化,然后在非常规格式中将值发送到D3。我使用date.js。这是一个较老的js库,但它完成了工作,它提供了多种格式。

3

是的,您可以创建自定义日期格式。

var xAxis = d3.svg.axis() 
    .scale(x) 
    .tickFormat(customDateFormat); 

function customDateFormat(date) { 
    // figure out what week the current date is in 
    // and return the appropriate string 
} 

如果你想成为更炫,可以实现在d3.js实现内置的格式相同的方式进行全面的格式。有关这方面的示例,请参见http://bl.ocks.org/4149176