Ici, nous avons une exigence intéressante d'algorithme du monde réel impliquant les couleurs.Algorithme de couleur aléatoire stable
N
Pretty Colors: Pour dessiner une belle carte (i.e.: camembert) nous devons choisir un ensemble aléatoire deN
couleurs qui sont « assez différentes » et bien ensemble. Cela pourrait être accompli en fixant la luminosité et la saturation et en passant par la teinte par étapes de360/N
.- Stable Color Assignment: étant donné Pie_1 avec les secteurs étiquetés ('A', 'B', 'C') et Pie_2 avec les secteurs étiquetés ('B', 'C', 'D'), ce serait bien si la couleur des secteurs B et C est la même sur Pie_1 et Pie_2. Cela aidera à éviter la confusion si des secteurs sont supprimés ou ajoutés au graphique au fil du temps. L'étiquette est la seule chose stable.
- Autorise les couleurs codées en dur: L'algorithme doit autoriser les relations label-> color en tant qu'entrée mais calcule les couleurs (conformément aux règles 1 et 2) pour le reste des étiquettes.
Je pense que cet algorithme, même s'il semble assez ad-hoc, sera utile dans plus d'une situation.
Des idées?
Mise à jour: Eric a raison de dire qu'il est impossible de garantir la stabilité des couleurs de chaque étiquette lorsque de nouvelles étiquettes apparaissent et disparaissent. Mais je suis content s'il est "assez stable", c'est-à-dire que les changements de couleur sont minimisés.
Je pensais à quelque chose comme:
- Chaque étiquette obtient une valeur de teinte aléatoire à l'aide de hachage (étiquette)% 360
- Afin de garantir que les teintes produites sont assez différents, nous divisons la teinte entourez d'un nombre fixe d'étapes (par exemple:
2*N
) et essayez d'arrondir les valeurs de teintes précédentes aux nouvelles valeurs différenciées. - Dans le cas de différentes étiquettes allant à la même valeur de teinte arrondie, nous cassons l'attache d'une manière ou d'une autre et déplacons le point ailleurs.
Mais cela laisse de côté le problème des couleurs codées en dur.
Si nous définissons la couleur (label): = hsb (hash (label)% 360, S, B) fonctionnera mais comment garantir que la teinte est différente. De l'autre côté, si vous utilisez une roue chromatique, quelle étiquette est hachée et commencez la roue chromatique et quelles sont les étiquettes qui suivent? Merci pour votre réponse – Olmo
@Olmo: Voir ma modification. –
ça fait beaucoup Eric. J'ai changé la question en wiki communautaire pour que je puisse répondre avec un peu plus d'espace – Olmo