레이블을 이동하는 고유 한 기능을 작성할 수 있습니다.
레이블 요소의 bbox를 가져 와서 컨테이너 내부에 있는지 확인하십시오 (> = 0 또는 < = 컨테이너의 너비). bbox를 가져 오는 것에 대한 한 가지주의 사항 - 라벨이 회전되므로 bbox에는 아직 회전하지 않은 요소의 매개 변수가 있음을 의미합니다. 회전이 텍스트 너비를 많이 변경하지 않는 경우에는 픽셀을 추가 할 수 있습니다. 그 차이를 상쇄. 부하에
function moveLabels() {
const ticks = this.xAxis[0].ticks;
const safeDistance = 10;
Object.keys(ticks).forEach(value => {
const label = ticks[value].label;
const bbox = label.getBBox(true);
if (bbox.y >= 0) {
if (bbox.x - safeDistance < 0) {
label.attr({
x: label.xy.x + Math.abs(bbox.x - safeDistance)
})
} else if (bbox.x + bbox.width + safeDistance > this.chartWidth) {
label.attr({
x: label.xy.x - (bbox.x + bbox.width + safeDistance - this.chartWidth)
});
}
}
})
}
이동 라벨/이벤트를 다시 그리기 :
chart: {
polar: true,
type: 'line',
events: {
load: moveLabels,
redraw: moveLabels
}
},
예를
:
https://jsfiddle.net/nd5fob5d/
가 SOOOOOO 감사합니다 .... 그것은 일 – user7674497