本廠宗旨:我們正在通過重新定位避免重疊dataLabels功能工作。這樣做時,show event更新dataLabel位置時會遇到問題。爲了說明我們的問題,我們提供了一個簡化示例,其中包含一個函數,用於將每個可見序列的第一個dataLabel重新定位到頂部(y方向)30px。重新定位功能由演出事件觸發。Highcharts位置dataLabels
... function adjustLables(chart, visibleIndex) {
console.log('dataLabels');
for (var i = 0; i < visibleIndex.length; i++) {
var index = visibleIndex[i],
dataLabel = chart.series[index].points[0].dataLabel,
adjY = dataLabel.y - 30;
chart.series[index].points[0].dataLabel.attr({
y: adjY
});
console.log(chart.series[index].name, 'dataLabel.y:', dataLabel.y, ', adjY:', adjY, dataLabel);
};
console.log('\n');
}; ...
我們的問題: 雖然我們的功能調整應用.attr的dataLabel.y屬性({Y:adjY})時,dataLabel對象並不在我們預期的方式運行。
例如:(see fiddle和以下描述)
重新定位只能一次是通過點擊圖例項目首次示出的系列。如果再次激活並激活同一系列,我們的調整將不再起作用。 (如激活系列2在我們的小提琴,你會看到它的第一dataLabel移動30PX頂部。但是,停用/重新激活系列2和dataLabel不再移動30PX頂端,但出現在其標準位置。)
爲調試這種神祕的停用/激活行爲,我們在調用.attr()之後將一些信息記錄到控制檯:seriesName,dataLabel.y,adjY,dataLabel-object。令人驚訝的是,儘管dataLabel.y和adjY值相同,但dataLabel對象本身在其y屬性中不受影響。
總的來說,我們想知道show event是否是更新dataLabel位置的正確方法。任何經驗或建議都非常受歡迎。