Javascript D3.js散点图中重叠标签的智能定位

Javascript D3.js散点图中重叠标签的智能定位,javascript,d3.js,Javascript,D3.js,我有一个遵循一般准则的散点图: const数据=[ { “名称”:“森吉兹·安德尔”, “地方联盟”:错, “联赛上场时间”:1189, “播放分钟数”:“1702”, “可用总分钟数”:2430, “总可用时长”1800分钟 }, { “姓名”:“优素福·亚齐奇”, “地方联盟”:没错, “联赛上场时间”:1343, “播放分钟数”:“1607”, “可用总分钟数”:2070, “可用总分钟数”:1620 }, { “姓名”:“Okay Yokuslu”, “地方联盟”:错, “联赛上场时间

我有一个遵循一般准则的散点图:

const数据=[
{
“名称”:“森吉兹·安德尔”,
“地方联盟”:错,
“联赛上场时间”:1189,
“播放分钟数”:“1702”,
“可用总分钟数”:2430,
“总可用时长”1800分钟
},
{
“姓名”:“优素福·亚齐奇”,
“地方联盟”:没错,
“联赛上场时间”:1343,
“播放分钟数”:“1607”,
“可用总分钟数”:2070,
“可用总分钟数”:1620
},
{
“姓名”:“Okay Yokuslu”,
“地方联盟”:错,
“联赛上场时间”:1058,
“播放分钟数”:“1204”,
“可用总分钟数”:1980年,
“总可用时长”1800分钟
},
{
“名称”:“EnesÜnal”,
“地方联盟”:错,
“联赛上场时间”:1404,
“播放分钟数”:“1426”,
“可用总分钟数”:2430,
“可用总分钟数”:2070
},
{
“姓名”:“Zeki Celik”,
“地方联盟”:错,
“联赛上场时间”:1995年,
“播放分钟数”:“2175”,
“可用总分钟数”:2430,
“可用总分钟数”:2070
},
{
“名称”:“Emre Akbaba”,
“地方联盟”:没错,
“联赛上场时间”:447,
“播放分钟数”:“537”,
“可用总分钟数”:990,
“可用总分钟数”:810
},
{
“姓名”:“Kaan Ayhan”,
“地方联盟”:错,
“联赛上场时间”:1499,
“播放分钟数”:“1769”,
“可用总分钟数”:2160,
“可用总分钟数”:1890
},
{
“姓名”:“Deniz Türüc”,
“地方联盟”:没错,
“联赛上场时间”:1182,
“播放分钟数”:“1363”,
“可用总分钟数”:1620,
“总可用时间”联盟分钟数:1260
},
{
“名称”:“Hakan Calhanoglu”,
“地方联盟”:错,
“联赛上场时间”:1646,
“播放分钟数”:“2201”,
“可用总分钟数”:2700,
“可用总分钟数”:1890
},
{
“姓名”:“AbdülkadirÖmür”,
“地方联盟”:没错,
“联赛上场时间”:1563,
“播放分钟数”:“1798”,
“可用总分钟数”:2160,
“总可用时长”1800分钟
},
{
“姓名”:“Ozan Kabak”,
“地方联盟”:错,
“联赛上场时间”:1354,
“播放分钟数”:“1714”,
“可用总分钟数”:2700,
“可用总分钟数”:1890
},
{
“姓名”:“Irfan Can Kahveci”,
“地方联盟”:没错,
“联赛上场时间”:1554,
“播放分钟数”:“1755”,
“可用总分钟数”:2250,
“总可用时数”:1710
},
{
“姓名”:“Serdar Aziz”,
“地方联盟”:没错,
“联赛上场时间”:917,
“播放分钟数”:“1397”,
“可用总分钟数”:2250,
“总可用时数”\u联赛时数:1530
},
{
“名称”:“Emre Kilinc”,
“地方联盟”:没错,
“联赛上场时间”:1718,
“播放分钟数”:“1748”,
“可用总分钟数”:1890,
“总可用时长”1800分钟
},
{
“姓名”:“Ertugrul Ersoy”,
“地方联盟”:没错,
“联赛上场时间”:1620,
“播放分钟数”:“1620”,
“可用总分钟数”:1890,
“总可用时长”1800分钟
},
{
“姓名”:“Hasan Ali Kaldirim”,
“地方联盟”:没错,
“联赛上场时间”:1710,
“播放分钟数”:“2353”,
“可用总分钟数”:2790,
“总可用时数”:1710
},
{
“姓名”:“Mert Günok”,
“地方联盟”:没错,
“联赛上场时间”:1890年,
“播放分钟数”:“2100”,
“可用总分钟数”:2430,
“可用总分钟数”:1890
},
{
“名称”:“锡南博拉特”,
“地方联盟”:错,
“联赛上场时间”:2250,
“播放分钟数”:“2340”,
“可用总分钟数”:2340,
“可用总分钟数”:2250
},
{
“姓名”:“Burak Yilmaz”,
“地方联盟”:没错,
“联赛上场时间”:760分钟,
“播放分钟数”:“760”,
“可用总分钟数”:1080,
“总可用时间”990分钟
},
{
“姓名”:“Ömer Ali Sahiner”,
“地方联盟”:没错,
“联赛上场时间”:1396,
“播放分钟数”:“1396”,
“可用总分钟数”:1620,
“总可用时数”\u联赛时数:1530
},
{
“姓名”:“默特·穆尔杜尔”,
“地方联盟”:错,
“联赛上场时间”:921,
“播放分钟数”:“1639”,
“可用总分钟数”:2790,
“可用总分钟数”:1620
},
{
“名称”:“Harun Tekin”,
“地方联盟”:没错,
“联赛上场时间”:1530,
“播放分钟数”:“2160”,
“可用总分钟数”:2520,
“总可用时数”:1710
},
{
“名称”:“Mehmet Topal”,
“地方联盟”:没错,
“联赛上场时间”:1224,
“播放分钟数”:“1638”,
“可用总分钟数”:2430,
“总可用时数”\u联赛时数:1530
},
{
“名称”:“塔坎塞族”,
“地方联盟”:没错,
“联赛上场时间”:1330分钟,
“播放分钟数”:“1700”,
“可用总分钟数”:2610,
“总可用时间”1980
}
];
常量边距={top:60,right:60,bottom:60,left:60},
宽度=600-边距。左侧-边距。右侧,
高度=600-margin.top-margin.bottom;
const x=d3.scaleLinear().range([0,width]).domain([0.5,1]);
常量y=d3.scaleLinear().range([height,0]).domain([0.5,1]);
常量红色=#BC261A';
常量黄色='#F8D749';
const xAxis=d3.axisBottom(x).tickFormat(d=>%${Math.round(d*100)}`);
常量yAxis=d3.axisLeft(y).tickFormat(d=>%${Math.round(d*100)}`);
常量svg=d3。选择(“#图表”)
.attr('width',width+margin.left+margin.right)
.attr('height',height+margin.top+margin.bottom)
.append('g')
.attr('transform','translate(${margin.left},${margin.top})`);
append('g')
.attr('class','x轴')
.attr('transform','translate(0',+(height)+'))
.呼叫(xAxis);
svg.append('