Я рекомендую використовувати кольорові простори HSV або HSL, а не кольоровий простір RGB, оскільки HSV та HSL краще структуровані для створення кольорів, які виглядають по-різному для людей. У вас буде більше роботи в RGB (хоча перетворення назад і назад існують, якщо вони вам потрібні).
Ось так виглядають HSV / HSL:
Використовуючи колірний простір HSV або HSL, ви можете припустити (дуже приблизно), що різниця між Н (відтінком) компонентами двох кольорів є хорошим наближенням сприйнятої відстані між кольорами - тобто чим більше зміна відтінку, тим більше різні кольори будуть виглядати на людей. Ви можете спробувати грати з S (насиченість) і L / V (легкість / значення), а також виділити ще кілька дуже різних кольорів, але вони не будуть виглядати настільки ж різними для тієї самої зміни значення, як і зміна відтінку.
Залежно від кількості різних кольорів, які вам потрібні, ви можете розділити простір відтінку на таку кількість різних кольорів. Якщо, наприклад, ви маєте діапазон відтінків у 256 значень і вам потрібні 16 різних кольорів, то ваш перший колір може бути (0, 128, 128), другий (16, 128, 128) тощо. Я дещо довільно вибрав значення S / L присмаку в середині, тому що зазвичай буде достатньо світлим і насиченим, щоб чітко побачити кольорові відмінності. Ця система проста, і передбачає, що вам потрібно нічого не знати про суміжність кольорів у вашому графіку / карті.
Якщо ви не знаєте заздалегідь, скільки різних кольорів вам потрібно, але ви знаєте верхню межу, і розділення діапазону відтінків на кольори з цією верхньою межею на увазі, як вище, як і раніше, дає хороші перцептивно різні кольори, тоді ви можете використовувати ту саму систему з верхня межа.
Якщо вам (могли) потрібні дуже багато різних кольорів, ви все одно можете піти від використання дуже схожих або навіть однакових кольорів, доки вони не з’являться біля інших елементів графіка, які мають подібний колір. Для цього потрібно знати вашу ситуацію примикання до графіку, який ви рендеруєте, і він не завжди може бути простим, і навіть тоді це може бути не дуже хорошою ідеєю, як в коментарях вказує Дюкелінг: це може заплутати глядачів, що використовується той самий колір двічі в графіку для двох різних понять.
Отже, нарешті, у найскладнішій ситуації ваш графік є досить складним, що у вас не вистачає кольорового простору, щоб у вас не виникли чіткі елементи з кольорами, занадто схожими за допомогою наведеної вище системи. У цьому випадку вам потрібно створити графік суміжності елементів вашого візуалізаційного графіка. Сусідність тут - нечітка концепція - вам доведеться правильно її визначити для вашої реальної ситуації. Наприклад, у вашому другому прикладі дані 12 липня мають задимлену точку, коли кожен колір сусідять з іншим. Один із підходів, який може вам допомогти, якщо ви зможете створити графік суміжності - це проблема забарвлення графіків - є бібліотеки, які можуть вам допомогти - наприклад, boost :: graph у C ++ .