1

我试图绘制一个具有正值和负值的柱形图。我打算在数据过于倾斜时将 yAxis 类型动态更改为对数。对数 yAxis 的期望是它有两个方向。例如,一个方向有 ticks [0.01, 0.1, 1, 10, 100, 1k],另一个有 ticks [-0.1, -1, -100],这取决于数据是什么样的。这是我用于图表加载事件的内容:

events: {
    load: function(){
        var s = this.series[0],
            d = s.data,
            minSize = 99999,
            size;
        for (var i = 0; i < d.length; i++) {
            if (d[i].y < 0)
                d[i].update({color: '#FF0000'}, false, false);
            size = Math.abs(d[i].y);
            if (size < minSize) 
                minSize = size; 
        }
        if (s.dataMax/minSize > 20 || Math.abs(s.dataMin)/minSize > 20) {
            this.yAxis[0].update({
                type: 'logarithmic' 
            })  
        }
    }
}

我发现 highstock/highcharts 不会生成我想要的。跳过所有负值,只识别正值,即只绘制yAxis 的一个方向。

猜测是 highstock/highcharts 调用 log(y) 函数来计算日志值,忽略负数,但我不知道是否有解决方法。

如果我自己使用对数函数,计算值并绘制图表,刻度线不可能正确,因为轴类型是线性的,这不是我想要的。

有任何想法吗?

谢谢!

4

0 回答 0