0

我在使用 Highcharts highstock 柱形图时遇到问题。xaxis min=0, max=5 [page size] 有 20 个类别。初始加载后,将 xaxis 滚动到末尾,然后单击修改数据。在此操作中,我将调用一个 api 并更新系列数据。即使只有一个类别,“图表也显示为无数据显示”。我想将滚动重置为初始位置,我无法为类别执行此操作。您将需要手动移动滚动

此外,由于只有一个类别,我不希望其他类别显示为数字。 https://jsfiddle.net/shashi3337/zcf8kvgx/7/

我正在更新图表以修改 xaxis min 和 max 以将 max 设置为 0 [ 1 category] ​​以删除数字。 https://jsfiddle.net/shashi3337/zcf8kvgx/5/

现在,当您单击添加数据时,它会添加回数据。我正在重置 min=0 和 max=5。现在我只看到每页滚动 1 个类别。

预期行为 我希望在单击修改数据按钮后滚动条会自动向后滚动,当我单击添加数据按钮时,我希望在 xaxis 上看到每页滚动 6 个类别。

function test(n) {
  var data = [];
  for (var i = 0; i < n; i++) {
    var value = Math.random() * 10;
    var x = {
      id: i,
      name: 'test ' + i,
      y: value
    }
    data.push(x);
  }
  return data;
}

var chart = Highcharts.chart('container', {
  chart: {
    type: 'column',
  },
  plotOptions: {
    column: {
      stacking: 'normal'
    },
  },
  xAxis: {
    type: 'category',
    min:0,
    max:5
  },
  scrollbar: {
    enabled: true
  },
  series: [{
      name: "A",
      data: test(20)
    }, {
      name: "B",
      data: test(20)
    },
    {
      name: "C",
      data: test(20)
    },
    {
      name: "D",
      data: test(20)
    }
  ]
});


$(document).ready(function(){
  $('#modify').click(function(){
   if(chart){
    while (chart.series.length > 0)
         chart.series[0].remove(true);


     chart.addSeries({
     name: 'new',
        data: test(1)
     });
    }
  });

  $('#add').click(function(){
   if(chart){
    while (chart.series.length > 0)
         chart.series[0].remove(true);

    chart.update({
      xAxis: {
        min:0,
        max:5
        }
     });

     chart.addSeries({
     name: 'A',
        data: test(20)
     });
    }
  });
});
4

1 回答 1

0

找到了这个问题的答案。

您需要使用 xAxis.setExtremes() 来修改图表上的极值。此时,用户设置的极端(例如通过滚动条)具有最高优先级,并且在您删除所有系列时不会被清除。

示例https://jsfiddle.net/BlackLabel/pp2qpxks/

 chart.xAxis[0].setExtremes(0, 0);
于 2018-03-13T18:29:23.800 回答