vega-lite:如何将 JSON 中的日期指定为包含年、月和日数的单独字段?
Posted
技术标签:
【中文标题】vega-lite:如何将 JSON 中的日期指定为包含年、月和日数的单独字段?【英文标题】:vega-lite: how to specify date in JSON as separate fields containing year, month, and day numbers? 【发布时间】:2019-07-17 01:45:21 【问题描述】:我的 JSON 数据是一个对象列表,每个对象都包含这种格式的日期:
"date" :
"year" : 2019,
"month" : 2,
"day" : 17
,
我如何告诉 Vega-lite 这是一个约会? 我通过创建另一个 day 字段来解决这个问题,该字段是连接这三个字段的字符串,并使用:
"format" :
"parse" :
"day" : "date: '%Y %m %d'"
但我希望能够只使用现有的 3 个字段....
【问题讨论】:
【参考方案1】:您可以使用计算转换以及datetime
表达式来执行此操作。例如(vega-editor link):
"data":
"values": [
"date": "year": 2019, "month": 2, "day": 15, "val": 1,
"date": "year": 2019, "month": 2, "day": 16, "val": 2,
"date": "year": 2019, "month": 2, "day": 17, "val": 4,
"date": "year": 2019, "month": 2, "day": 18, "val": 3,
"date": "year": 2019, "month": 2, "day": 19, "val": 5,
"date": "year": 2019, "month": 2, "day": 20, "val": 6
]
,
"transform": [
"calculate": "datetime(datum.date.year, datum.date.month, datum.date.day)",
"as": "combined"
],
"mark": "area",
"encoding":
"x": "field": "combined", "type": "temporal",
"y": "field": "val", "type": "quantitative"
【讨论】:
这很有帮助,谢谢!为什么第 2 个月被认为是 3 月而不是 2 月?有没有办法在你上面写的计算表达式中从月份中减去一个?修订:更改为 datum.date.month - 1 个作品! 进一步修订:从零开始的月份确实是日期时间()的记录行为 是的,根据文档:vega.github.io/vega/docs/expressions/#datetime,月份是从零开始的。如果您想使用正常的基于 1 的月份,您可以在计算表达式中将其更改为date.month - 1
。以上是关于vega-lite:如何将 JSON 中的日期指定为包含年、月和日数的单独字段?的主要内容,如果未能解决你的问题,请参考以下文章