咨询GitHub贡献图单日贡献等级计算规则及四分位数疑问
GitHub贡献图等级计算逻辑详解
核心纠正:你对四分位数的基础理解没错,但GitHub的贡献等级划分不是按天数均分的四分位数分组,而是基于贡献值的数值分布区间来划分——这是导致低等级天数远多于高等级的关键原因。
具体计算逻辑:
- 先筛选所有有贡献的日期的贡献数值(无贡献的日期直接归为最低等级,对应深色模式下最暗的方块)
- 将所有非零贡献值按从小到大排序,计算三个四分位数(Q1、Q2、Q3)——这里的四分位数是基于贡献值的数值分布计算,而非强制把天数分成四个等份
- 等级划分规则(对应深色模式下亮度从暗到亮):
- 贡献值 = 0:等级1(最暗)
- 0 < 贡献值 ≤ Q1:等级2
- Q1 < 贡献值 ≤ Q2:等级3
- Q2 < 贡献值 ≤ Q3:等级4
- 贡献值 > Q3:等级5(最亮)
为什么低等级天数更多?
开发者的贡献值分布天然是右偏态的:大部分日期的贡献数很少(比如1-2次提交),只有少数日期会有大量贡献(比如发布版本、批量提交)。这种分布下,Q1、Q2甚至Q3可能都集中在较低的贡献值区间,导致大量天数落在低等级,而高等级只有少数贡献值极高的日期。举个简单例子:假设统计365天,其中200天贡献值为1,100天贡献值为3,50天贡献值为10,15天贡献值为30。排序后计算四分位数:
- Q1是1(25%分位点落在贡献值1的区间)
- Q2是1(50%分位点仍在贡献值1的区间)
- Q3是3(75%分位点落在贡献值3的区间)
对应的等级分布: - 等级1(0贡献):假设0天
- 等级2(≤1):200天
- 等级3(1<≤1):0天(因Q2=Q1,无中间区间)
- 等级4(1<≤3):100天
- 等级5(>3):65天
显然低等级(等级2)的天数远多于高等级(等级5),完全符合GitHub贡献图的实际表现。
额外细节:GitHub会避免将相同贡献值的日期拆分到不同等级,如果某个贡献值恰好跨越四分位数,所有该贡献值的日期会被归到同一个等级,这也会进一步加剧各等级的天数不均等。
内容的提问来源于stack exchange,提问作者malbert
相关产品推荐
相关产品推荐

