Eine Idee, die ich mir schon seit einiger Zeit überlegt habe, ist es, so viele Farben wie nötig in möglichst unterschiedlichen (begrenzten) Farben zu erzeugen. Der zusätzliche Aufwand besteht darin, dass wenn ich später ein paar zusätzliche Farben für dasselbe Diagramm benötige (möglicherweise werden ein paar zusätzliche Balken hinzugefügt), diese in dasselbe Schema passen müssen, wobei die vorhandenen Farben gleich bleiben.
Die Idee, die ich mir ausgedacht habe, ist ein kleiner Trick. Stellen Sie sich einen Farbkreis vor (möglicherweise hat jeder einen anderen Farbton mit der gleichen Sättigung und Helligkeit, obwohl Sie jeden Kreis durch einen beliebigen Farbraum definieren können). Anstatt für diesen Kreis einen Winkel in Grad anzugeben, haben Sie einen Bereich von Null bis 255. In der Binärdarstellung sind dies 00000000 bis 11111111. Fügen Sie Eins zu einem 8-Bit-Wert 255 hinzu, und der Wert läuft wieder auf Null über, sodass er auf natürliche Weise als "Kreiswert" fungiert. (In technischer Hinsicht ist Addition und Subtraktion modulo 256).
Der Trick ist, wenn Sie die Farbe Null, Farbe Eins usw. auswählen, um diese Zahlen bitweise umzukehren. Um das in C zu machen, würde ich ...
value = ((value & 0x0F) << 4) | ((value & 0xF0) >> 4);
value = ((value & 0x33) << 2) | ((value & 0xCC) >> 2);
value = ((value & 0x55) << 1) | ((value & 0xAA) >> 1);
So wird die Sequenz 0, 1, 2, 3, 4 in 0, 128, 64, 192, 32 transformiert.
Der Punkt ist, dass Sie 256 verschiedene Farben haben und die frühesten sehr weit auseinanderliegen, wobei die späteren weniger weit auseinanderliegen und die Lücken füllen (64 liegt auf halbem Weg zwischen 0 und 128, 32 liegt auf halbem Weg) zwischen 0 und 64 etc).
Jede Bitbreite für einen bestimmten "Winkel" funktioniert, wenn Sie die Bitumkehrung anpassen, und natürlich können Sie mehrere Zyklen gleichzeitig für verschiedene Parameter der Farbe ausführen (möglicherweise dreht sich der Farbton schnell, die Sättigung dreht sich jedoch langsamer).
Das lässt nur die Frage offen, wie Sie Ihre "Winkel" bestimmten RGB-Zahlen zuordnen oder was auch immer, für die ich kein Experte bin - oh, und ob ActionScript Bit-Fiddling unterstützt.