重新标记仅在高图

时间:2016-01-21 01:33:40

标签: javascript model-view-controller charts highcharts

我遵循了本教程:http://jsfiddle.net/Yrygy/270/并且工作正常。但是,我在同一视图中有另一张图表。折线图。

第二张图表也假设重新标注。如何将该函数用于单个图表容器Id或其图表类型,如:

var chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'column'
        },

使用的功能:

  function realignLabels(serie) {

            $.each(serie.points, function (j, point) {
                if (!point.dataLabel) return true;

                var max = serie.yAxis.max,
                    labely = point.dataLabel.attr('y')

                if (point.y / max < 0.35) {
                    point.dataLabel.attr({
                        y: labely - 100,
                    });
                }
            });
        };

        Highcharts.Series.prototype.drawDataLabels = (function (func) {
            return function () {
                func.apply(this, arguments);

                if (this.options.dataLabels.enabled || this._hasPointLabels)
                {
                    realignLabels(this);
                }
            };
        }(Highcharts.Series.prototype.drawDataLabels));

受影响的折线图:http://prntscr.com/9srmpv

1 个答案:

答案 0 :(得分:0)

您可以修改包装器:

 Highcharts.Series.prototype.drawDataLabels = (function(func) {
    return function() {
      func.apply(this, arguments);
      if ((this.options.dataLabels.enabled || this._hasPointLabels) && this.chart.options.chart.realignLabels) {
        realignLabels(this);
      }
    };
  }(Highcharts.Series.prototype.drawDataLabels));

如您所见,我在if语句中添加了新选项。现在,如果你想重新标记你的标签,你只需要写:

chart: {
  type: 'column',
  realignLabels: true,
  animation: false
},

我添加了动画参数。如果没有此参数,当您隐藏和显示系列时,重新排列标签将不起作用。

例如: http://jsfiddle.net/Yrygy/497/