J'imagine que vous travaillez avec javascript, html et css? Bien, en tout cas, deux approches viennent à l'esprit.
La première est de formuler comme un problème d'optimisation. Vous avez besoin de calculer la position idéale pour chaque étiquette. Ce sera basé sur la taille de la bulle, l'emplacement souhaité (c'est à dire en haut, bas, gauche, droite), et la taille de l'étiquette (à la fois de la police et de la longueur). Ensuite, vous devez paramétrer vos coordonnées, par exemple dans une liste de 2N éléments, où N est le nombre d'étiquettes. Ensuite, vous devez initialiser les étiquettes dans une certaine position (ou d'une population si à l'aide d'un algorithme génétique) et d'appliquer un algorithme d'optimisation qui aura besoin d'une fonction de coût. Ce serait basé sur un ensemble de positions de labels sont de l'idéal, ainsi que tout ce qui porte atteinte à vos règles, comme le chevauchement.
Ou, en font un problème de physique. "Attacher" chaque étiquette de sa bulle avec certains lien rigide. Donner à chaque étiquette et chaque bulle une force de répulsion et également ajouter un mondial et de la plus forte graviational de la force (dans le préféré le haut/la gauche/la droite/vers le bas). Un court simulation physique jusqu'à ce que vous atteindre un équilibre. Les mathématiques ne devrait pas être trop dur.