在 AMcharts 中的散点图上定位单个标签

Positioning an individual label on a scatter plot in AMcharts

美好的一天

希望有人能帮助我。我在 AMcharts 上创建了一个散点图,每个数据点都有自己的标签,但只要我输入更多数据,标签就会溢出。我试过分别定位每个标签,但我似乎做对了。我还尝试使用 labelFunction 来更改单个数据点的位置,但我不确定我是否做对了。有人可以帮帮我吗。

我真的很纠结这件事。

javaScript

var chart = AmCharts.makeChart("chartdiv", {
"type": "xy",
"pathToImages": "http://www.amcharts.com/lib/3/images/",
"theme": "none",
"dataProvider": [{
    "y": 10,
    "x": 14,
    "value": 59,
    "y2": -5,
    "x2": -3,
    "value2": 44
}, {
    "y": 5,
    "x": 3,
    "value": 50,
    "y2": -15,
    "x2": -8,
    "value2": 12
}, {
    "y": -10,
    "x": 8,
    "value": 19,
    "y2": -4,
    "x2": 6,
    "value2": 35
}, {
    "y": -6,
    "x": 5,
    "value": 65,
    "y2": -5,
    "x2": -6,
    "value2": 168
}, {
    "y": 15,
    "x": -4,
    "value": 92,
    "y2": -10,
    "x2": -8,
    "value2": 102
}, {
    "y": 13,
    "x": 1,
    "value": 8,
    "y2": -2,
    "x2": 0,
    "value2": 41
}, {
    "y": 1,
    "x": 6,
    "value": 35,
    "y2": 0,
    "x2": -3,
    "value2": 16
}],
"valueAxes": [{
    "position":"bottom",
    "axisAlpha": 0
}, {
    "minMaxMultiplier": 1.2,
    "axisAlpha": 0,
    "position": "left"
}],
"graphs": [{
    "balloonText": "x:<b>[[x]]</b> y:<b>[[y]]</b><br>value:<b>[[value]]     </b>",
    "bullet": "circle",
    "bulletBorderAlpha": 0.2,
    "bulletAlpha": 0.8,
    "lineAlpha": 0,
    "fillAlphas": 0,
    "valueField": "value",
    "xField": "x",
    "yField": "y",
    "maxBulletSize": 100,
    "labelText": "[[x]]",
    "labelFunction": function(obj,label) {
        setTimeout(function() {
            console.log(obj.bulletGraphics.node.nextElementSibling);
        },100); // delay to generate the element
        return label;
    }
}, {
    "balloonText": "x:<b>[[x]]</b> y:<b>[[y]]</b><br>value:<b>[[value]]</b>",
    "bullet": "diamond",
    "bulletBorderAlpha": 0.2,
    "bulletAlpha": 0.8,
    "lineAlpha": 0,
    "fillAlphas": 0,
    "valueField": "value2",
    "xField": "x2",
    "yField": "y2",
    "maxBulletSize": 100
}],
"marginLeft": 46,
"marginBottom": 35

});

好的,我给你的是这个Fiddle
它使用 labelFunction 来移动标签。作为 labelFunction returns 一个空白字符串,您必须使用 \u00a0 (space) 或 \n(新行)来执行此操作。 所以该函数检查前一个(!)点是否具有相同(!)坐标。
您可以修改它以检查整个数据集并查看是否有任何数据点在附近。
我希望你可以用这个。 :)