Highcharts JS v3.0.10的allowOverlap属性
在我的项目中,我们使用的是highchart版本:Highcharts JS v3.0.10 根据较新版本,适用于Highcharts JS v3.0.10的allowOverlap属性,highcharts,Highcharts,在我的项目中,我们使用的是highchart版本:Highcharts JS v3.0.10 根据较新版本,适用于allowOverlap=false的等效代码或属性应该是什么 如何在旧版本中实现alloOverlap=false 链接:负责隐藏重叠数据标签的代码目前位于Highcharts core:,但以前它是一个单独的模块: 然而,要使其工作,您必须在代码中进行许多更改。我认为使用以下插件将是您的最佳解决方案: (function(H) { var each = H.each,
allowOverlap=false
的等效代码或属性应该是什么
如何在旧版本中实现alloOverlap=false
链接:负责隐藏重叠数据标签的代码目前位于Highcharts core:,但以前它是一个单独的模块: 然而,要使其工作,您必须在代码中进行许多更改。我认为使用以下插件将是您的最佳解决方案:
(function(H) {
var each = H.each,
extend = H.extend;
/**
* Hide overlapping labels. Labels are moved and faded in and out on zoom to provide a smooth
* visual imression.
*/
H.Series.prototype.hideOverlappingDataLabels = function() {
var points = this.points,
len = points.length,
i,
j,
label1,
label2,
intersectRect = function(pos1, pos2, size1, size2) {
return !(
pos2.x > pos1.x + size1.width ||
pos2.x + size2.width < pos1.x ||
pos2.y > pos1.y + size1.height ||
pos2.y + size2.height < pos1.y
);
};
// Mark with initial opacity
each(points, function(point, label) {
label = point.dataLabel;
if (label) {
label.oldOpacity = label.opacity;
label.newOpacity = 1;
}
});
// Detect overlapping labels
for (i = 0; i < len - 1; ++i) {
label1 = points[i].dataLabel;
for (j = i + 1; j < len; ++j) {
label2 = points[j].dataLabel;
if (label1 && label2 && label1.newOpacity !== 0 && label2.newOpacity !== 0 &&
intersectRect(label1.alignAttr, label2.alignAttr, label1, label2)) {
(points[i].labelrank < points[j].labelrank ? label1 : label2).newOpacity = 0;
}
}
}
// Hide or show
each(points, function(point, label) {
label = point.dataLabel;
if (label) {
if (label.oldOpacity !== label.newOpacity) {
label[label.isOld ? 'animate' : 'attr'](extend({
opacity: label.newOpacity
}, label.alignAttr));
}
label.isOld = true;
}
});
};
H.wrap(H.Series.prototype, 'drawDataLabels', function(proceed) {
proceed.call(this);
this.hideOverlappingDataLabels();
});
}(Highcharts));
(功能(H){
var each=H.each,
扩展=H.extend;
/**
*隐藏重叠标签。标签在缩放时被移动和淡入淡出,以提供平滑的效果
*视觉表达。
*/
H.Series.prototype.hideOverlappingDataLabels=函数(){
var points=此.points,
len=点。长度,
我
J
标签1,
标签2,
intersectRect=函数(位置1、位置2、大小1、大小2){
回来(
pos2.x>pos1.x+size1.width||
pos2.x+size2.widthpos1.y+size1.height||
位置2.y+尺寸2.H<位置1.y
);
};
//用初始不透明度标记
每个(点、功能(点、标签){
label=point.dataLabel;
如果(标签){
label.oldpacity=label.opacity;
label.newOpacity=1;
}
});
//检测重叠标签
对于(i=0;i
现场演示:您好@Mahender Kvs,您能更准确地解释问题吗?我已经测试了这个例子,一切都应该正常工作。正常工作@ppotaczekhey@ppotaczek,我们可以在商业项目中使用这个代码吗?这合法吗?嗨@Mahender Kvs,是的,你可以。该代码作为插件在此处共享:@Mahender Kvs-您可以添加一个条件来阻止代码执行。请检查此示例: