我遵循了本教程: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
答案 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
},
我添加了动画参数。如果没有此参数,当您隐藏和显示系列时,重新排列标签将不起作用。