【发布时间】:2015-11-26 08:11:51
【问题描述】:
我有两个带有多个轴的 Highcharts。两组坐标轴代表相同的单位,两个图表水平对齐。我创建了一个 JSFiddle 来说明基于 Highchart sample 的设置:
http://jsfiddle.net/dennismadsen/gbbzz2jh/
在此示例中,您可以将图表上的 y 轴放大到左侧。请注意,右侧图表上的轴是同步的。这是使用 afterSetExtremes 事件完成的:
function syncYAxis(e) {
var thisAxis = this;
var thisChart = e.currentTarget.chart;
Highcharts.each(Highcharts.charts, function (chart) {
if (chart && chart !== thisChart) {
var currentAxis = chart.get(thisAxis.options.id);
currentAxis.setExtremes(e.min, e.max);
}
});
}
如果我将正确的图表更改为不同的 Highchart,那将不再有效。请参阅此 JSFiddle:
http://jsfiddle.net/dennismadsen/kmuhw0zf/
我已尝试调试并将afterSetExtremes 事件添加到右侧图表轴:
function rightChartAxisChanged(e) {
var thisAxis = this;
console.log('Right chart axis changed: '+thisAxis.options.id);
console.log('min/max: '+e.min+','+e.max);
console.log('user min/max: '+e.userMin+','+e.userMax);
}
据我所知,e.min 和 e.max 中的新最小值/最大值似乎计算错误。我在syncYAxis 中的setExtremes 调用中给出的正确值存储在e.userMin 和e.userMax 中。
【问题讨论】:
-
所以在我放大第一个高图时您提供的第二个小提琴中,第二个也放大了。这意味着它们是同步的。你能告诉我你想同步什么吗
-
对我来说似乎也能正常工作。您能否描述一下什么是不正确/不起作用的,或者我们如何逐步复制您的问题?
标签: javascript highcharts