gpt4 book ai didi

javascript - Highcharts 条形图数据标签重叠

转载 作者:行者123 更新时间:2023-11-28 08:49:04 25 4
gpt4 key购买 nike

我正在使用 highcharts 条形图。该系列是动态加载的,因此有时只有一个值,有时可能有 10 个值。我无法给出设定的宽度。我遇到了顶部数据标签的问题当有很多值时,条形图相互重叠。在互联网上进行研究后,我能找到的关于这个问题的最接近的东西是在 stackflow 上,它适用于两个或更多系列

Overlap datalabels line chart highcharts

有什么方法可以检测单个系列的重叠并调整数据标签,使其不相互重叠。感谢您提供任何帮助

最佳答案

通常不支持此解决方案,但您可以调整此解决方法

    function StaggerDataLabels(series) {
sc = series.length;
if (sc < 2) return;

for (s = 1; s < sc; s++) {
var s1 = series[s - 1].points,
s2 = series[s].points,
l = s1.length,
diff, h;

for (i = 0; i < l; i++) {
if (s1[i].dataLabel && s2[i].dataLabel) {
diff = s1[i].dataLabel.y - s2[i].dataLabel.y;
h = s1[i].dataLabel.height + 2;

if (isLabelOnLabel(s1[i].dataLabel, s2[i].dataLabel)) {
if (diff < 0) s1[i].dataLabel.translate(s1[i].dataLabel.translateX, s1[i].dataLabel.translateY - (h + diff));
else s2[i].dataLabel.translate(s2[i].dataLabel.translateX, s2[i].dataLabel.translateY - (h - diff));
}
}
}
}
}

//compares two datalabels and returns true if they overlap


function isLabelOnLabel(a, b) {
var al = a.x - (a.width / 2);
var ar = a.x + (a.width / 2);
var bl = b.x - (b.width / 2);
var br = b.x + (b.width / 2);

var at = a.y;
var ab = a.y + a.height;
var bt = b.y;
var bb = b.y + b.height;

if (bl > ar || br < al) {
return false;
} //overlap not possible
if (bt > ab || bb < at) {
return false;
} //overlap not possible
if (bl > al && bl < ar) {
return true;
}
if (br > al && br < ar) {
return true;
}

if (bt > at && bt < ab) {
return true;
}
if (bb > at && bb < ab) {
return true;
}

return false;
}

http://jsfiddle.net/menXU/6/ .

关于javascript - Highcharts 条形图数据标签重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com