0

我有一个图表,其中 x 轴上有一个日期时间,y 轴上有一个以秒为单位的值,例如 10、200 或 4500。这很好用。

我需要的是类似于日期时间的行为,当你有一个日期范围时,它会显示该范围之间的天数,但如果范围真的很小,它会显示该范围之间的小时数。我的要求是我想做同样的事情,但有一个以秒为单位的数字,如果范围很大,比如可能在 100 到 2500 之间,它应该转换为分钟,我现在拥有的是以下内容:

yAxis: {
        title: {
            text: 'Minutes',
            margin: 10
        },
        min: 0,
        tickInterval: 60,
        labels:{
           formatter: function(){
                var minutes = ""
                if (this.value > 59){
                    minutes = Highcharts.numberFormat((this.value/60), 0)
                }
                return minutes;
            }
       }
    }

这对于 60 到 500 之间的范围非常有用,但是当范围较长时,它会画很多线来显示分钟。

有任何想法吗?我可以根据某个值更改 tickInterval 吗?

我已经看到这个回复Plotting seconds, minutes and hours on the yAxis with Highcharts,但我不想在该轴上处理 datetime 对象。

4

1 回答 1

0

如果可以的话,我真的建议使用内置的日期时间轴类型。它消除了很多麻烦,例如您所询问的问题。

如果做不到这一点,那么您在查看 tickInterval 时就走在了正确的轨道上。您可以尝试根本不指定 tickInterval,让 highcharts 为您决定。它通常会发现一些明智的东西。

如果这对您不起作用,那么您将不得不查看您的数据范围并自己选择一个合理的 tickInterval。您可以使用的一种算法是:

if (range < 500)
    tickInterval = 60
else
    tickInterval = 120

显然,如果您的范围可以更大,您可能需要另一种情况,将 tickInterval 切换到 300 或更高。

于 2013-03-22T09:05:23.173 回答