How to Automatically Generate N "Distinct" Colors?
The question poses the challenge of creating N visually distinct colors. While piecewise linear functions on the RGB cube can generate colors, they may not always be noticeably different. Other methods include dividing the RGB cube into a lattice and sampling points.
However, the provided solutions still fall short of optimality.
Arbitrary N
- "Colour displays for categorical images" provides a free downloadable solution.
- "A WEB SERVICE TO PERSONALISE MAP COLOURING" offers a webservice solution that will be available soon.
- "An Algorithm for the Selection of High-Contrast Color Sets" provides a free C implementation.
- "High-contrast sets of colors" presents the first algorithm for solving this problem.
N is Finite and Relatively Small
Given a small N, consider using lists of predefined colors:
- Boynton's list of 11 almost never confused colors
- Kelly's 22 colors of maximum contrast
- A list created by an MIT student
The mentioned articles also offer useful tools for converting between color systems:
- Color Theory: How to convert Munsell HVC to RGB/HSB/HSL
- http://chem8.org/uch/space-55036-do-blog-id-5333.html
- https://metacpan.org/pod/Color::Library::Dictionary::NBS_ISCC
Code Implementations of predefined color lists in C#:
- Kelly's Max Contrast Set
- Boynton's Optimized
Predefined Colors in Hex and 8-Bit-Per-Channel:
- Python implementation of Kelly's colors
- JavaFX implementation of Kelly's colors
Additional Tips:
- Remember to sort colors based on hue to ensure maximum distinction.
- Avoid colors in Boynton's and Kelly's lists for people with defective color vision.
The above is the detailed content of How Can We Generate N Visually Distinct Colors Automatically?. For more information, please follow other related articles on the PHP Chinese website!