使用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轴上显示日期的子集以避免重叠。
答案 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
实例不具备意义,因为它是一个复杂的原型,因此您可以将这些时间戳视为日期的序列化。