J'ai rencontré le même problème. J'ai dû trouver une bonne méthode de sélection des contrastive de la couleur de la police pour l'affichage des étiquettes de texte sur colorscales/cartes de chaleur. Il devait être une méthode universelle et a généré la couleur devait être "beau", ce qui signifie que la simple génération de couleur complémentaire n'était pas la bonne solution - parfois, il a généré étrange, de très forte intensité de couleurs qui ont été dur à regarder et à lire.
Après de longues heures de test et d'essayer de résoudre ce problème, j'ai trouvé que la meilleure solution est de sélectionner la police blanche pour "dark" des couleurs, et en noir, la police pour "bright" les couleurs.
Voici un exemple de fonction j'utilise en C#:
Color ContrastColor(Color color)
{
int d = 0;
// Counting the perceptive luminance - human eye favors green color...
double a = 1 - ( 0.299 * color.R + 0.587 * color.G + 0.114 * color.B)/255;
if (a < 0.5)
d = 0; // bright colors - black font
else
d = 255; // dark colors - white font
return Color.FromArgb(d, d, d);
}
Cela a été testé pour beaucoup de différents colorscales (arc-en-ciel, niveaux de gris, la chaleur, la glace, et bien d'autres) est la seule "méthode universelle" j'ai trouvé.
Modifier
Changé la formule de comptage a
"perceptif " luminance" - il semble vraiment mieux! Déjà mis en œuvre dans mon logiciel, lui ressemble beaucoup.