Ответ 1
Решение проблем с кодом Flot Google с помощью Marshall Leggett (ссылка):
Я обнаружил, что кажется, что для ярлыков пика для общих совпаденийкруговые диаграммы, делающие их нечитаемыми, особенно если несколько небольшие процентные значения. Это с плагином jquery.flot.pie.
См. Прикрепленные изображения. Я работал над этим с добавлением процедуры противодействия столкновениям в коде рендеринга метки. я добавив копию пересмотренного плагина. См. Строки 472-501, особенно новые функции getPositions() и comparePositions(). Это частично основано на обнаружении DOM-элементов Šime Vidas DOM код. Что-то вроде этого может быть хорошим дополнением к пирогу библиотека.
длинный рассказ короткий:
-
В jquery.flot.pie.js и после строка 463, которая содержит:
label.css('left', labelLeft);
добавьте следующий код:
// check to make sure that the label doesn't overlap one of the other labels
var label_pos = getPositions(label);
for(var j=0; j<labels.length; j++)
{
var tmpPos = getPositions(labels[j]);
var horizontalMatch = comparePositions(label_pos[0], tmpPos[0]);
var verticalMatch = comparePositions(label_pos[1], tmpPos[1]);
var match = horizontalMatch && verticalMatch;
if(match)
{
var newTop = tmpPos[1][0] - (label.height() +1 );
label.css('top', newTop);
labelTop = newTop;
}
}
function getPositions(box) {
var $box = $(box);
var pos = $box.position();
var width = $box.width();
var height = $box.height();
return [ [ pos.left, pos.left + width ], [ pos.top, pos.top + height ] ];
}
function comparePositions(p1, p2) {
var x1 = p1[0] < p2[0] ? p1 : p2;
var x2 = p1[0] < p2[0] ? p2 : p1;
return x1[1] > x2[0] || x1[0] === x2[0] ? true : false;
}
labels.push(label);
-
Добавьте в
drawLabels()
следующее:var labels = [];