幅広い値の可能性があるデータセットを指定して、適切なカラー パレットを取得する方法を理解しようとしています。(githubの貢献ヒートマップを考えてください)
値は動的であるため、使用できるかどうかはわかりません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 の要素のうち、最初の 4 つだけが色を持ち、それ以外はすべて #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 になると思います。
私が間違っていることは何ですか?