正と負の値を持つ縦棒グラフをプロットしようとしました。データがあまりにも歪んでいる場合、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) 関数を呼び出して、負の値を無視してログ値を計算しますが、回避策があるかどうかはわかりません。
自分で対数関数を使用し、値を計算してチャートを描画すると、軸のタイプが線形であるため、目盛りが正しくなりません。これは私が望んでいるものではありません。
何か案は?
ありがとう!