How to pick color palette for a pie-chart? [closed]
I have some code that generates image of a pie chart. It's a general purpose class, so any number of slices can be given as input. Now I have problem picking good colors for the slices. Is there some algorithm that is good at that?
Colors need to follow some rules:
- they need to look nice
- adjacent colors should not be similar (blue next to green is a no-go)
- pie background color is white, so white is out of option
Some algorithm manipulating with RGB values would be a preferred solution.
Solution 1:
I solved it as follows:
- Choose a base color.
- Calculate its hue (
baseHue
). - Create a color with the same saturation and luminosity, with its hue calculated as:
hue = baseHue + ((240 / pieces) * piece % 240
In C#:
int n = 12;
Color baseColor = System.Drawing.ColorTranslator.FromHtml("#8A56E2");
double baseHue = (new HSLColor(baseColor)).Hue;
List<Color> colors = new List<Color>();
colors.Add(baseColor);
double step = (240.0 / (double)n);
for (int i = 1; i < n; ++i)
{
HSLColor nextColor = new HSLColor(baseColor);
nextColor.Hue = (baseHue + step * ((double)i)) % 240.0;
colors.Add((Color)nextColor);
}
string colors = string.Join(",", colors.Select(e => e.Name.Substring(2)).ToArray());
I used the HSLColor class.
The Google Charts example that uses 12 pieces and a base color of #8A56E2:
Solution 2:
I would pre-compile a list of about 20 colors, then start repeating with the 2nd color. This way you won't break your second rule. Also, if someone makes a pie chart with more than 20 slices, they have bigger problems. :)