1

正と負の値を持つ縦棒グラフをプロットしようとしました。データがあまりにも歪んでいる場合、yAxis タイプを対数に動的に変更するつもりでした。対数 yAxis に必要なのは、2 つの方向があることです。たとえば、データがどのようなものであるかに応じて、一方の方向には 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