我尝试绘制具有正值和负值的柱形图。我打算在数据过于倾斜时动态地将yAxis类型更改为对数。对数yAxis所需的是它有两个方向。例如,一个方向具有刻度[0.01, 0.1, 1, 10, 100, 1k]
,另一个方向具有刻度[-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)函数来计算日志值,忽略底片,但我不知道是否有解决方法。
如果我自己使用日志功能,计算值并绘制图表,则标记不能正确,因为轴类型是线性的,这不是我想要的。
有什么想法吗?
谢谢!