Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Highcharts条形图数据标签重叠_Javascript_Jquery_Css_Charts_Highcharts - Fatal编程技术网

Javascript Highcharts条形图数据标签重叠

Javascript Highcharts条形图数据标签重叠,javascript,jquery,css,charts,highcharts,Javascript,Jquery,Css,Charts,Highcharts,我使用的是highcharts条形图。该系列是动态加载的,因此有时只能有一个值,有时可以有10个值。我无法给出设置的宽度。我遇到了一个问题,即当有很多值时,条形图顶部的数据标签相互重叠。在互联网上做了研究之后,我能找到的关于这个问题的最接近的东西是stackflow,它是两个或更多系列的 是否有任何方法可以检测单个系列的重叠,并调整datalabel,使其不相互重叠。 感谢您提供的任何帮助通常不支持此解决方案,但您可以调整此解决方案 function StaggerDataLabels

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

是否有任何方法可以检测单个系列的重叠,并调整datalabel,使其不相互重叠。
感谢您提供的任何帮助

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

    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;
}
函数数据标签(系列){
sc=系列长度;
如果(sc<2)返回;
对于(s=1;sar | brab | | bbal&&blal&&brat&&btat&&bb

您可以旋转数据标签。我如何在单个系列中使用此。。。。旋转技巧对我来说不是很好…通过旋转,最右边的标签不会显示。。。是否有任何方法可以检测单个系列的标签重叠并将其对齐