2016-10-07 39 views

回答

1

我认为好的想法是将您的dataLabels负载和重绘事件的功能,因为你可能有你的dataLabels甚至上图右位置调整即可。

在这里你可以看到代码,可以帮助你:

var positionLabels = function(chart) { 
    var series = chart.series[0], 
     dataLabelsGroup = series.dataLabelsGroup, 
     xVal; 
    Highcharts.each(dataLabelsGroup.element.children, function(d) { 
     xVal = (d.attributes.transform.value).substring((d.attributes.transform.value).indexOf('(') + 1, (d.attributes.transform.value).indexOf(',')); 
     $(d).attr('transform', 'translate(' + xVal + ',-20)') 
    }) 
    }; 

在这里,你可以找到活生生的例子它如何工作的:http://jsfiddle.net/gc8144kv/7/

0

这是我的想法。 Take a look at the jsfiddle.

将图表作为s​​vg对象加载后执行此代码。

$(function(){ 
var fixedYPos = -25; 
var extractXValue = function(value) { 
    var myString = value; 
    var myRegexp = /^translate\(([0-9]+)\,.*?\)$/g; 
    var match = myRegexp.exec(myString); 
    return match[1]; 
}; 
var $el = $("svg.highcharts-root .highcharts-data-label"); 
$el.each(function(index, value) { 
    var elTransformX = extractXValue($($el[index]).attr("transform")); 
    $($el[index]).attr("transform", "translate(" + elTransformX + "," + fixedYPos + ")"); 
}); 
}); 

enter image description here

+0

没错,这就是我想做的事情。不幸的是,在调整数据标签的大小后,他们回到了初始位置:/ 非常感谢! – onlyn

相关问题