我试图绘制一个具有正值和负值的柱形图。我打算在数据过于倾斜时将 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) 函数来计算日志值,忽略负数,但我不知道是否有解决方法。
如果我自己使用对数函数,计算值并绘制图表,刻度线不可能正确,因为轴类型是线性的,这不是我想要的。
有任何想法吗?
谢谢!