我有一个带有双y轴的图表,如何从两者中获得最小值和最大值?
load: function () {
var series = this.series,
max = series[0].dataMax,
min = series[0].dataMin;
series.forEach(function (serie) {
if (serie.dataMax > max) {
max = serie.dataMax;
}
if (serie.dataMin < min) {
min = serie.dataMin;
}
});
this.yAxis[0].update({
min: min,
max: max
});
我正在尝试上面的方法,但它只会得到一侧的最大值并更新轴值。
如何使两个y轴使用相同的最大值?
要从轴获取最小值/最大值,请使用返回ExtremesObject
的getExtremes
。ExtremesObject
具有以下属性:
dataMax,dataMin,max,min,userMax,userMin
如果您想设置一个新的最小/最大值,您应该使用setExtremes
setExtremes(〔newMin〕〔,newMax〕〔,rewrap〕〔,animation〕〔,eventArguments〕(
设定渲染时间后轴的最小值和最大值。如果startOnTick和endOnTick选项为true,则最小值和最大值将四舍五入到最接近的刻度。为了防止这种情况,可以在调用setExtremes之前将这些选项设置为false。此外,setExtremes将不允许低于minRange选项的范围,默认情况下,minRange选项是五个点的范围。
因此,从两个轴获得最小值和最大值,您可以对最小值做这样的操作(如果您想根据数据调整视图,而不是手动设置极值(:
let firstAxisExtremes = chart.yAxis[0].getExtremes(),
secondAxisExtremes = chart.yAxis[1].getExtremes(),
min, max;
if(firstAxisExtremes.dataMin <= secondAxisExtremes.dataMin) {
min = firstAxisExtremes.dataMin
} else {
min = secondAxisExtremes.dataMin
}
API参考:getExtremes
、setExtremes
、ExtremesObject
此外,您可以使用当前代码并设置yAxis.linkedTo
属性:
。。。
当一个轴链接到主轴时,它将采用相同的极值作为主,但由min或max或setExtremes。(…(
yAxis: [{}, {
linkedTo: 0,
opposite: true
}]
现场演示:http://jsfiddle.net/BlackLabel/n5bzrqs8/
API:https://api.highcharts.com/highcharts/yAxis.linkedTo