Frage

Ich habe eine Liste von numerischen Werten. Ich kann die Werte normalisiert, wenn nötig.

Ich brauche diese Liste in eine Liste von Farben zu verwandeln (in HSL, RGB oder jedes anderen Farbmodell - ich kann immer Konvertierung tut später).

Für jeden gegebenen Wert der Farbe jedes Mal die gleiche sein muss.

Je mehr verschiedene zwei angegebenen Zahlenwerte sind, desto mehr sollten Kontrast entsprechenden Werte sein.

Alle verwendeten Farben müssen wie möglich zueinander als Kontrast sein (dies ist eine weiche Begrenzung, grobe Lösung tun würde).

Beachten Sie, dass die Liste ist ziemlich groß (tausende von Zahlen), so einfach alle Zahlen in einem einzigen Farbkanal quetschen würde produzieren zu dicht Ergebnisse.

War es hilfreich?

Lösung

Sie könnten erwägen, eine 3D mit raumfüllende Kurve durch den gewünschten Farbraum . Ich werde zweiten Marks CIELAB Vorschlag möchte ich über diese letzte Mal gewusst hätte, musste ich löst ein ähnliches Problem.

Andere Tipps

Wie auch immer Algorithmus Sie schließlich setzen sich auf, könnten Sie versuchen, die CIELAB Farbraum. Es normalisiert die Unterschiede in der menschlichen Farbwahrnehmung, so dass gleiche numerische Abstand gibt gleich Wahrnehmungs Unterschiede.

Siehe: Wie automatisch generiert N "distinct" Farben

Es wäre am besten Ihre Werte zu normalisieren, und sie durch den Code ausführen, schlug ich vor (wo Farbton == Ihr Wert), den Aufbau einer Karte / Hash. (Sie können stattdessen eine Hash-Style-Funktion verwenden, die wahrscheinlich effizienter ist.)

Sie können „Randomisierung“ Helligkeit (oder Helligkeit, je nach Modell) und Sättigung einiger vorgegebenen Bits Ihrer Nummer, zum Beispiel.

Warum nicht Grautöne verwenden? Berechnen Sie die Min / Max-Werte und verwenden, die jede Zahl in einen anderen Farbton von Weiß bis Schwarz zu übersetzen.

Ich weiß, es ist nicht Farben, aber meiner Meinung nach wird es einfacher sein, die Ergebnisse zu interpretieren. Ich kann sagen, was es bedeutet, wenn etwas dunkler im Vergleich leichter, aber wer ist zu sagen, dass zum Beispiel grün ein höherer Wert als Orange ist?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top