When looking at contribution graphs, I often see something similar to the following example: the user has <5 days, during which he/she contributed a lot (e.g. >30 contributions). This causes the green shades to be allocated in linear quarters relative to the maximum e.g. like
darkest shade: >22 contributions,
2nd darkest: >15 contributions,
3rd darkest: >=7 contributions, and
lightest green shade: <7 contributions.
During the remaining days, there are less contributions in our example, e.g. <5. The issue with this distribution is that most days with any contribution will be shown in the same, lightest green shade and only very few days have different shades of green.
I suggest that instead of linearly dividing the shades relative to the day of maximum contributions, you create a distribution ‘number of days with x contributions’. From that, you extract approximate quartiles and map shades of green to them. Example: the user has
34 days with <3 contributions (lightest green),
29 days with 3-4 contributions (3rd darkest green),
31 days with 5-8 contributions (2nd darkest green), and
28 days with >8 contributions (darkest green).
I think that with this approach, the contribution graph would become more expressive. The price to pay with the above design is that it is not as easy to spot outlier days with a large number of contributions. If that is important, the above algorithm could be adapted from a 25/25/25/25 percent split to e.g. a 30/30/30/10 percent split.
What do you think about this?