我正在研究一个要求,我需要在Y轴上有两个窗格,一个共同的x轴。我能够做到这一点。然而,在每个Y轴上,我需要从10到100的单位,其中例如10到50具有例如1厘米和50到100的间隔具有5厘米的间隔。 这在附加的丝网印刷中有描述。
我可以使用highstock的功能来实现这一目标吗?我研究了tickPixelInterval以及lograthmic轴但是不能走远:(
此外,即使我没有映射到它的数据点,我也需要确保y轴(10到100)上的比例始终显示。换句话说,如果我只有两个数据点,例如60和90,那么60以下的类别在图表上是不可见的。但是,我需要始终可以看到所有10到100的映射。
非常感谢任何帮助。谢谢你提前!
答案 0 :(得分:1)
使用轴的最小值和最大值可以设置比例。如果未保留比例(例如从11到99),则将startOnTick和endOnTick设置为false将解决问题。
示例:http://jsfiddle.net/kcrv97sm/
yAxis: {
min: 10,
max: 100,
tickInterval: 10,
showLastLabel: true,
startOnTick: false,
endOnTick: false
}
API: http://api.highcharts.com/highstock#yAxis.min http://api.highcharts.com/highstock#yAxis.startOnTick
默认的可用轴类型是“线性”,“对数”,“日期时间”或“类别”。
在你的情况下这还不够。您可以尝试编写或应用自定义Highstock扩展 - 包装,然后更改比例。
示例1 - 一个功能:http://jsfiddle.net/a3fLLyo4/73/
示例2 - 两个功能:http://jsfiddle.net/a3fLLyo4/69/
您必须提出将描述如何在轴上设置所有功能的功能。您没有指定在60到80之间是否应该是线性的或更复杂的。
Highcharts.wrap(Highcharts.Axis.prototype, 'translate', function (proceed) {
// Normal Translation
var result = proceed.apply(this, [].slice.call(arguments, 1));
// Apply curving
if (this.options.curvature) {
var val = 1 - Math.sqrt(1 - Math.pow(((arguments[1]-this.min) / (this.max - this.min)), 2)),
result = (this.len * val);
if (arguments[2] == 0) {
result = this.len - result;
}
}
return result;
});