Zalecam stosowanie przestrzeni kolorów HSV lub HSL, a nie przestrzeni kolorów RGB, ponieważ HSV i HSL mają lepszą strukturę do generowania kolorów, które wyglądają inaczej niż u ludzi. Będziesz miał więcej pracy w RGB (choć konwersje tam i z powrotem istnieją, jeśli ich potrzebujesz).
Tak wygląda HSV / HSL:
Korzystając z przestrzeni barw HSV lub HSL, możesz (z grubsza) założyć, że różnica między składowymi H (odcienia) dwóch kolorów jest dobrym przybliżeniem odległości percepcyjnej między kolorami - tj. Im większa zmiana odcienia, tym więcej inaczej kolory będą wyglądać dla ludzi. Możesz spróbować grać z S (nasycenie) i L / V (jasność / wartość), aby wyodrębnić jeszcze kilka bardzo różnych kolorów, ale nie będą one wyglądać tak różnie dla tej samej zmiany wartości jak zmiana odcienia.
W zależności od liczby różnych kolorów, których potrzebujesz, możesz podzielić przestrzeń barw na tę liczbę różnych kolorów. Jeśli na przykład masz zakres odcieni 256 wartości i potrzebujesz 16 różnych kolorów, to twoim pierwszym kolorem może być (0, 128, 128), drugi (16, 128, 128) i tak dalej. Nieco arbitralnie wybrałem wartości S / L na środku, ponieważ zwykle będą one wystarczająco jasne i nasycone, aby wyraźnie zobaczyć różnice kolorów. Ten system jest prosty i zakłada, że nie musisz nic wiedzieć o przyleganiu kolorów na wykresie / mapie.
Jeśli nie wiesz z góry, ile różnych kolorów potrzebujesz, ale znasz górną granicę, a podział zakresu odcieni na kolory z myślą o tym górnym limicie, jak powyżej, nadal daje dobre różne pod względem percepcyjnym kolory, możesz użyć tego samego systemu z górna granica.
Jeśli potrzebujesz (i) bardzo wielu różnych kolorów, nadal możesz uniknąć bardzo podobnych lub nawet takich samych kolorów, o ile nie pojawią się one w pobliżu innych elementów wykresu o podobnym kolorze. Wymaga to znajomości sytuacji sąsiedztwa na renderowanym wykresie i może nie zawsze być proste, a nawet wtedy może nie być dobrym pomysłem, jak zauważa Dukeling w komentarzach: może być mylące dla widzów, że używany jest ten sam kolor dwa razy na wykresie dla dwóch różnych pojęć.
Wreszcie w najbardziej złożonej sytuacji wykres jest na tyle złożony, że nie masz wystarczającej przestrzeni kolorów, aby upewnić się, że nie skończysz z wyraźnymi elementami o kolorach, które są zbyt podobne przy użyciu powyższego systemu. W takim przypadku musisz zbudować wykres sąsiedztwa elementów wykresu wizualizacji. Adjacency jest tutaj rozmytym pojęciem - będziesz musiał go poprawnie zdefiniować dla swojej aktualnej sytuacji. Na przykład w drugim przykładzie dane z 12 lipca mają dławik, w którym każdy kolor sąsiaduje z każdym innym. Jednym z podejść, które może ci pomóc, jeśli możesz zbudować wykres sąsiedztwa, jest problem kolorowania wykresów - istnieją biblioteki, które mogą ci pomóc - na przykład boost :: graph w C ++ .