2015-11-20 28 views
3

使用vega图表库,我动态加载我的数据从JavaScript对象。从该对象值包含JavaScript的日期和金额,例如:“时间”缩放类型在维加不工作的JavaScript日期

[ 
    {date: new Date(2000, 0, 1), amount: 3}, 
    {date: new Date(2001, 0, 1), amount: 7}, 
    {date: new Date(2002, 0, 1), amount: 5} 
] 

ordinal阶类型工作正常,但规模型time给了我以下错误:

Uncaught TypeError: ((intermediate value)(intermediate value) , group.scale(...)).rangeBand is not a function 

我应该如何格式化我的日期? (我试图改变图表规范中的format.parse,但它不会改变任何东西(我不解析数据,而是直接从javascript对象中加载它))。

最终目标是在x轴上显示日期子集以避免重叠。

回答

1

time在vega工作在时代时间戳,这是整数,而不是日期。

它很容易从一个JavaScript Date实例获得它们,简单地套用getTime()(或valueOf())对他们

[ 
    {date: new Date(2000, 0, 1).getTime(), amount: 3}, 
    {date: new Date(2001, 0, 1).getTime(), amount: 7}, 
    {date: new Date(2002, 0, 1).getTime(), amount: 5} 
] 

我想补充一点,维加规格的强度和性质都是可序列化的,也就是说你可以把它们写成一个字符串(或者更准确地说是一个JSON)。因此,Date实例无意义,因为它是复杂的原型,所以您可以将这些时间戳视为日期的序列化。