【问题标题】:Update DataLabels position on Highcharts更新 Highcharts 上的 DataLabels 位置
【发布时间】:2018-03-02 20:17:10
【问题描述】:

当我使用 dataLabel.translate 命令更新 DataLabels 位置时工作正常,但如果我使用 yAxis[i].update 命令,Highcharts 不再移动任何 DataLabels。

如果您选择更新数据,数据标签不会移动,否则它们会正确移动。 fiddle example

var chart = new Highcharts.Chart({
  chart: {
    renderTo: 'container',
    type:'column',        
    events:
    {
        load: function(){
            for(var j = 0; j < this.series.length; j++) {
                for(var i = 0; i < this.series[j].data.length; i++) {
                    var d = this.series[j].data[i];
                    d.dataLabel.translate(d.dataLabel.x, d.dataLabel.y-50);
                }
            }
        }
    }        
  },
  plotOptions: { series: {dataLabels: {enabled: true} } },    
  xAxis: {categories: ['Jan', 'Feb', 'Mar', 'Apr']},    
  yAxis: {max: 100, min:0},    
  series: [{data: [60, 70, 45, 85]}]} , function(chart){
if(confirm('Update on YAxis?'))
{
  chart.yAxis[0].update({
      max: 500,
      min: 50,
      tickInterval: 50
  });
}});

任何想法如何我仍然可以更新 Yaxis 数据和更改 DataLabels 位置?

【问题讨论】:

标签: highcharts position axis


【解决方案1】:

如果将事件从 load 更改为 render,则函数从 translate 更改为 attrd.dataLabel.y 更改为 d.dataLabel.alignAttr.y,代码将起作用:

    events: {
      render: function() {
        for (var j = 0; j < this.series.length; j++) {
          for (var i = 0; i < this.series[j].data.length; i++) {
            var d = this.series[j].data[i];
            d.dataLabel.attr({
              y: d.dataLabel.alignAttr.y - 50
            });
          }
        }
      }
    }
  },

现场演示: http://jsfiddle.net/BlackLabel/LL4z4eL5/

顺便说一句,做同样事情的更简单方法是使用dataLabels.y 属性:http://jsfiddle.net/BlackLabel/tpor20xa/

【讨论】:

  • 你让我开心
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多