3

使用 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 轴上显示日期的子集以避免重叠。

4

1 回答 1

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实例没有意义,因为它是一个复杂的原型,因此您可以将这些时间戳视为日期的序列化。

于 2015-12-11T07:38:55.217 回答