热图 yAxis 更改未按预期工作

Heatmap yAxis change does not work as expected

我有一个热图(see fiddle here 和下面的代码),我想通过让用户按下按钮来更改 Y 轴(参见 fiddle)。这个想法是你最多看到10年。

但是,当通过 Y 轴的更新方法更改 min/max 值时,它开始在 X 轴处交叉,并且您只能看到当年波段的一半(并且只有一半)最高年份)与原始视图相比。这与规范相矛盾,该规范说所有未更改的轴选项在设置时保持不变,例如min/max.

因此,在开始位置,您将 2008 年和 2018 年视为一个整体条,当您开始更改时,顶部和底部条变为一半。

如何防止这种影响并使 bottom/top 年显示在 'full height'?

var thisHeatmap;
function HeatmapPrev() {
  let minValue = thisHeatmap.yAxis[0].min;
  let maxValue = thisHeatmap.yAxis[0].max;
  if (minValue - 10 <= 2008) minValue = 2008;
  else minValue -= 10;
  maxValue = minValue + 10;
  thisHeatmap.yAxis[0].update({min: minValue, max: maxValue}, true);
}

function HeatmapNext() {
  let minValue = thisHeatmap.yAxis[0].min;
  let maxValue = thisHeatmap.yAxis[0].max;
  if (maxValue + 10 >= 2020) maxValue = 2020;
  else maxValue += 10;
  minValue = maxValue - 10;
  thisHeatmap.yAxis[0].update({min: minValue, max: maxValue}, true);
}

thisHeatmap = Highcharts.chart('chartcontainer', {
chart: {type: 'heatmap'},
boost: {useGPUTranslations: true},
xAxis:{
  title: {text: 'Day number'},
  min: 1, max: 366,
},
yAxis:{
  title:{text: 'Years'},
  min: 2008, max: 2018
}, 
data[] }] });

更新轴极值时,不会添加 y 轴上的额外填充。作为由 0.5 计算的极值和禁用属性更改的解决方案:startOnTickendOnTick.

thisHeatmap.yAxis[0].update({
    min: minValue - 0.5,
    max: maxValue + 0.5
}, true);

    yAxis: {
        ...,
        startOnTick: false,
        endOnTick: false
    }

现场演示: https://jsfiddle.net/BlackLabel/cjsmn0re/

API参考:

https://api.highcharts.com/highcharts/yAxis

https://api.highcharts.com/highcharts/series.heatmap.rowsize