閾値スケール
閾値スケールは量子化スケールに似ていますが、ドメインの任意の部分集合を範囲内の離散値にマッピングできます。入力ドメインは依然として連続しており、一連の閾値に基づいてスライスに分割されます。このクロロプレースを参照してください。
scaleThreshold(domain, range)
例 · ソース · 指定されたdomainとrangeで新しい閾値スケールを作成します。
const color = d3.scaleThreshold([0, 1], ["red", "white", "blue"]);
domainが指定されていない場合、[0.5]がデフォルトになります。
const color = d3.scaleThreshold(["red", "blue"]);
color(0); // "red"
color(1); // "blue"
rangeが指定されていない場合、[0, 1]がデフォルトになります。
threshold(value)
例 · ソース · 入力domain内のvalueが与えられると、出力rangeに対応する値を返します。例えば
const color = d3.scaleThreshold([0, 1], ["red", "white", "green"]);
color(-1); // "red"
color(0); // "white"
color(0.5); // "white"
color(1); // "green"
color(1000); // "green"
threshold.invertExtent(value)
ソース · domain内の値の範囲[x0, x1]を、range内の対応するvalueに対して返します。これは、rangeからdomainへの逆マッピングを表します。
const color = d3.scaleThreshold([0, 1], ["red", "white", "green"]);
color.invertExtent("red"); // [undefined, 0]
color.invertExtent("white"); // [0, 1]
color.invertExtent("green"); // [1, undefined]
このメソッドは、インタラクション(例えば、マウスの下にあるピクセル位置に対応するドメイン内の値を決定する)に役立ちます。最低閾値以下の範囲は未定義(無制限)であり、最高閾値以上の範囲も同様です。
threshold.domain(domain)
例 · ソース · domainが指定されている場合、スケールのドメインを指定された値の配列に設定します。
const color = d3.scaleThreshold(["red", "white", "green"]).domain([0, 1]);
値は昇順でなければならず、そうでない場合はスケールの動作が未定義になります。値は通常数値ですが、自然に順序付けられた値(文字列など)も機能します。閾値スケールは、順序付けられた任意の型をエンコードするために使用できます。スケールの範囲内の値の数がn + 1の場合、スケールのドメイン内の値の数はnでなければなりません。ドメイン内にn個未満の要素がある場合、範囲内の追加の値は無視されます。ドメインにn個以上の要素がある場合、スケールは一部の入力に対して未定義を返す可能性があります。
domainが指定されていない場合、スケールの現在のドメインを返します。
color.domain() // [0, 1]
threshold.range(range)
例 · ソース · rangeが指定されている場合、スケールの範囲を指定された値の配列に設定します。
const color = d3.scaleThreshold().range(["red", "white", "green"]);
スケールのドメイン内の値の数がnの場合、スケールの範囲内の値の数はn + 1でなければなりません。範囲内にn + 1個未満の要素がある場合、スケールは一部の入力に対して未定義を返す可能性があります。範囲内にn + 1個以上の要素がある場合、追加の値は無視されます。指定された配列内の要素は数値である必要はありません。任意の値または型が機能します。
rangeが指定されていない場合、スケールの現在の範囲を返します。
color.range() // ["red", "white", "green"]
threshold.copy()
const c1 = d3.scaleThreshold(d3.schemeBlues[5]);
const c2 = c1.copy();
このスケールへの変更は、返されたスケールには影響しません。その逆も同様です。