3
我想弄清楚如何獲得正確的調色板給定的數據集的可能性範圍廣泛的值。 (想想github的貢獻熱圖)D3量化顏色比例沒有顯示正確的顏色分佈
請注意,這些值是動態的,所以我不確定我可以使用d3.scale.threshold
。
量化數據集:
var arr = [26,12,7,6,5,5,5,4,4,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0];
我用下面的色階,但是,出了41元的,應該是彩色的,只有前四有色差,所有事情都設置爲#eeeeee (灰色)。
var color_scale = d3.scale.quantize()
.domain([0, d3.max(arr)])
.range(["#eeeeee","#edf8e9","#bae4b3","#74c476","#238b45"]);
量化輸出:
color_scale(26): #238b45
color_scale(12): #bae4b3
color_scale(7) : #edf8e9
color_scale(6) : #edf8e9
color_scale(5) : #eeeeee
color_scale(4) : #eeeeee
color_scale(2) : #eeeeee
color_scale(1) : #eeeeee
color_scale(0) : #eeeeee
更新:
看來,使用位數預期爲下面的一組,不工作:
位數的數據集:
var arr = [26,12,7,6,5,5,5,4,4,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
使用下面的色標:
var color_scale = d3.scale.quantile()
.domain(arr)
.range(["#eeeeee","#edf8e9","#bae4b3","#74c476","#238b45"]);
位數輸出:
color_scale(26): #238b45
color_scale(12): #238b45
color_scale(7) : #238b45
color_scale(6) : #238b45
color_scale(5) : #238b45
color_scale(4) : #238b45
color_scale(2) : #238b45
color_scale(1) : #74c476
color_scale(0) : #edf8e9
我期望所有的值> 0具有顏色,全0是#eeeeee。
任何想法我做錯了什麼?
這是一個很好的觀點。不過,我不確定分位數是否也會給出正確的輸出(請參閱我更新的問題)。 看起來分位數不會考慮這些值,而只考慮數據集的大小來創建桶的數量並均勻分配它們。 –
那麼你究竟想要什麼? –
我希望所有值> 0都有一個顏色,全0都是#eeeeee。如果你看到[Github的](https://github.com/Ocramius)貢獻熱圖,只要它有一個數字(不管值有多大),它們都會有一個顏色。 –