好问题。
有几种方法可以隐藏或过滤掉负值:
replace-value设置使用表达式来修改或过滤系列值:
[widget]
type = chart
title = PV power
timespan = 3 day
entity = pvout.25630
[series]
label = Sun Altitude at (-35.3089, 149.2004)
metric = sun_altitude
color = orange
replace-value = value < 0 ? null : value
[tags]
lat=-35.3089
lon=149.2004
此表达式将从系列中过滤掉所有小于 0 的值。
结果:https ://axibase.com/chartlab/3170e35d/3/

min-range-force设置可用于设置 y 轴的最小范围:
[widget]
type = chart
title = PV power
timespan = 3 day
entity = pvout.25630
min-range-force = 0
[series]
label = Sun Altitude at (-35.3089, 149.2004)
metric = sun_altitude
color = orange
[tags]
lat=-35.3089
lon=149.2004
结果:https ://axibase.com/chartlab/3170e35d/4/

如果您使用脚本来计算太阳高度,那么您可以使用以下Math.max
函数:
[widget]
type = chart
title = PV power
timespan = 3 day
[series]
label = Altitude
#API: SunCalc.getPosition = function (date, lat, lng)
value = var pos = SunCalc.getPosition(new Date(time), -35.3089, 149.2004);
value = return Math.max(0, pos.altitude)
frequency = 30 minute
color = orange
结果:https ://axibase.com/chartlab/3170e35d/5/

值方程可用于创建计算序列,不包括负值:
[widget]
type = chart
title = PV power
timespan = 3 day
entity = pvout.25630
[series]
metric = sun_altitude
display = false
alias = sun_alt
[tags]
lat=-35.3089
lon=149.2004
[series]
label = Sun Altitude at (-35.3089, 149.2004)
value = Math.max(0, value('sun_alt'))
color = orange
在这种情况下,我们隐藏原始序列并分配一个别名,然后我们使用该等value = Math.max(0, value('sun_alt'))
式创建一个没有负值的新计算序列。
结果:https ://axibase.com/chartlab/3170e35d/6/
