javascript - Highcharts - 柱形图重绘动画

标签 javascript jquery highcharts

我正在尝试使用新数据数组更新现有数据系列,并在完成后调用 redraw 函数。虽然这很完美,但我不太满意,因为我想要一种增长/收缩的过渡。我看到了 example by Highcharts (摆弄现有数据集,然后单击按钮“将新数据设置为选定系列”)但我无法复制此行为。

这是我写的代码:

  var series, newSeriesThreshold = this.chart.series.length * 2;

  for (var i = 0; i < data.length; i += 2) {
    series = {
      name:  this.data[i].title,
      data:  this.data[i].data,
      color: this.data[i].color
    };

    if (i >= newSeriesThreshold) {
      this.chart.addSeries(series, false);
    } else {
      var currentSeries = this.chart.series[i / 2];
      currentSeries.setData(series.data, false);
    }
  }

  this.chart.redraw();

这些是创建图表时的选项:

  var config = {
    chart: {
      renderTo: $(this.container).attr('id'),
      type: this.settings.type,
      animation: {
        duration: 500,
        easing: 'swing'
      }
    },
    title: {
      text: null
    },
    legend: {
      enabled: this.settings.legend.show
    },
    tooltip: {
      formatter: function() {
        return this.x.toFixed(0) + ": <b>" + this.y.toString().toCurrency(0) + '</b>';
      }
    },
    xAxis: {
      title: {
        text: this.settings.xaxis.title,
        style: {
          color: '#666'
        }
      }
    },
    yAxis: {
      title: {
        text: this.settings.yaxis.title,
        style: {
          color: '#666'
        }
      }
    },
    series: series,
    plotOptions: {
      column: {
        color: '#FF7400'
      }
    },
    credits: {
      enabled: false
    }
  };

这会产生没有过渡效果的立即更新。知道我可能做错了什么吗?

最佳答案

我已经通过销毁并重新创建图表解决了这个问题。

这是对我有帮助的 highcharts 论坛上的链接:http://forum.highcharts.com/highcharts-usage/animation-on-redraw-t8636/#p93199

答案来自 highcharts 支持团队。

    $(document).ready(function() {
            var chartOptions = {
                    // Your chart options
                    series: [
                             {name: 'Serie 1' , color: '#303AFF', data: [1,1,1,1,1,1,1}
                            ]
                };

            var chart = new Highcharts.Chart(chartOptions);

        $("#my_button").click(function(){ 
            chart.destroy();
            chartOptions.series[0].data = [10,5,2,10,5,2,10];
            chart = new Highcharts.Chart(chartOptions);
        });
    });

关于javascript - Highcharts - 柱形图重绘动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188114/

相关文章:

javascript - 按 2 个属性对对象数组进行排序

javascript - 使用 jQuery 更改内部样式表规则后,是否可以通过 jQuery 读取原始内部样式表规则?

javascript - Angular Http put 方法在传递数据时出错(服务器期望表单 param )

javascript - 在 Node Js 中连接两个不同的集合形成 mongoDB

javascript - HTML5 音频播放器,无法读取 null 的属性 'paused'

javascript - 隐藏和显示 div

javascript - 在谷歌地图中设置平移边界等于图像叠加

javascript - 如何让 Highcharts 从外部 JSON 文件获取数据?

angular2-highcharts 在 Angular 11 中不起作用

javascript - 调整窗口大小时 Highcharts 对齐 HTML