参数化vega-lite中的datetime



我正在试着画一张温度与时间的简单线图。

我试图使一个参数(例如滑块)的日期时间(以确定范围),但我不能得到一个参数与日期时间类型的工作。我将年、月和日作为单独的(整数)参数:

"params": [
{
"name": "lowYear",
"value": 2021,
"bind": {"input": "range", "min": 2020, "max": 2022, "step": 1}
},
{
"name": "lowMonth",
"value": 1,
"bind": {"input": "range", "min": 1, "max": 12, "step": 1}
},
{
"name": "lowDay",
"value": 1,
"bind": {"input": "range", "min": 1, "max": 31, "step": 1}
}
]

我可以很容易地对日期时间应用过滤器,但是当我对这些值使用表达式时,这就失败了。

"transform": [
{
"filter": {
"field": "timestamp",
"gte": {"year": 2021, "month": 2, "date": 20}
}
}
]

但是失败了:

"transform": [
{
"filter": {
"field": "timestamp",
"gte": {"year": {"expr": "lowYear"}, "month": 2, "date": 20}
}
}
]

过滤器似乎可以接受表达式,但在datetime中嵌套时可能不接受。是这样吗?我如何参数化一个日期时间?

不确定你是否还在寻找这个问题的答案,但我有一个类似的问题,我现在已经解决了。

我的问题是用x轴的比例来表示整个12个月,即使没有数据存在,例如,12月,基于从范围控制中选择的年份。

scale: {"domain" :[{"expr":"datetime(AnnualPeriod,0,1)"},{"expr":"datetime(AnnualPeriod,11,31)"}]}

,"AnnualPeriod"数据字段是否绑定到范围控件

"params": [{"name" : "AnnualPeriod", "value": 2019,"bind" : {"input": "range", "min":1995, "max":2020,"step":1}}],

,使用以下过滤器按年过滤数据:

transform:[{"filter":"year(datum.date_of_transfer)===AnnualPeriod"}],

我认为对你有帮助的是:

{"expr":"datetime(AnnualPeriod,0,1)"}

,AnnualPeriod等价于lowYear月份01月为1第一个.

所以你的应该是:

"gte": {"expr":"datetime(lowYear,1,20)"}

注意以零为基数的数组。1 =二月

最新更新