问题描述
我正在尝试绘制温度与时间的简单折线图。
我正在尝试为日期时间创建一个参数(例如滑块)(以确定范围),但我无法获得一个使用日期时间类型的参数。我改为将年、月和日作为单独的(整数)参数:
"params": [
{
"name": "lowYear","value": 2021,"bind": {"input": "range","min": 2020,"max": 2022,"step": 1}
},{
"name": "lowMonth","value": 1,"min": 1,"max": 12,{
"name": "lowDay","max": 31,"step": 1}
}
]
我可以轻松地对日期时间应用过滤器,但是当我对这些值使用表达式时,这会失败。
"transform": [
{
"filter": {
"field": "timestamp","gte": {"year": 2021,"month": 2,"date": 20}
}
}
]
但这失败了:
"transform": [
{
"filter": {
"field": "timestamp","gte": {"year": {"expr": "lowYear"},"date": 20}
}
}
]
过滤器似乎可以接受表达式,但嵌套在 datetime
中时可能不能。是这种情况吗?如何参数化日期时间?
解决方法
不确定您是否还在寻找这个问题的答案,但我遇到了类似的问题,现在我已经解决了。
我的问题涉及根据从范围控件中选择的年份,让 x 轴的刻度代表整个 12 个月,即使在 12 月不存在任何数据。
scale: {"domain" :[{"expr":"datetime(AnnualPeriod,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,1)"}
其中 AnnualPeriod 相当于您的 lowYear,月份是 0 表示 January 和 1 是 第一个。
所以你应该阅读:
"gte": {"expr":"datetime(lowYear,1,20)"}
注意数月的从零开始的数组。 1 = 2 月