vega中的'time'比例类型不适用于javascript日期

时间:2015-11-20 04:19:17

标签: javascript vega

使用vega图表库,我正在从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 个答案:

答案 0 :(得分:1)

vega中的time比例用于纪元时间戳,它是整数而不是日期。

从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}
]

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