D3.js v4/v5 カラースケールの作り方

2018-03-03

円グラフやコンター図を書くときに便利なD3のカラースケールの作り方を紹介します。

d3-scale

d3.scaleLinear

スケールの線形変換を使った方法です。通常はグラフの座標変換に用いますが、色にも用いることができます。

d3.scaleLinearはdomainで指定した範囲を、rangeで指定した範囲に変換して出力する関数を設定します。colorには関数が設定され、

のようにdomainで指定した範囲の数値を代入して使います。入力した数値に応じてRGB値を線形変換して返します。次のチャートは”red”、”blue”をrangeに指定したサンプルです。チャートの下の数値はscaleに入力した値です。

次のように3色以上の色を設定することもできます。

d3.scaleOrdinal

rangeに入力された配列を繰り返し設定します。

d3.interpolate

簡単に2つの色の線形補完をしたい場合はd3.interpolateを使います。d3.scaleLinearとの違いは入力値が0.0~1.0の値の範囲に設定されることです。

d3.scaleSequential

domainで設定した範囲を0.0~1.0の範囲に線形変換して関数に入力します。出力値は関数に応じて決まります。例えばd3.interpolateを使って複数の色を組み合わせたなスケールを作ることができます。

d3.scaleThreshold

しきい値で色を判定します。domainに入力された配列がしきい値になるため、rangeにはdomainより1つ多い配列要素が必要です。

まとめ

D3で用意されているカラーテーマもあります。こちらを参照ください。