2016-08-11 1 views
0

d3.scale.quantize()colorBrewerを使用してカラースケールを取得しています。与えられた値の特定の範囲に対応し、私8異なる色を与える量子化されたカラースケールからの戻りしきい値d3

.... 
var extent = d3.extent(collection.features, function(d) { 
     return d.properties.mean; 
    }); 

var colorScale = d3.scale.quantize() 
    .domain(extent) 
    .range(colorbrewer.RdYlBu[8]); 
... 

。 私はその後、私は値の範囲は色"#fdae61"または"#fee090"に対応しているかを知るにはどうすればよいsvg

.... 
.attr("fill-opacity", 0.1) 
.attr("stroke", "grey") 
.style("fill", function(d) { 
    return colorScale(d.properties.mean); 
}); 
... 

を埋めるためにcoloScaleを使うのか?これらの値にはどうすればアクセスできますか?私はあなたが必要なもの

答えて

0

...伝説を作るためにそれらを必要 はquantize.invertExtent(value)です:

は、ドメイン内の値の範囲を返し範囲内の対応する値の[X0、X1]:逆量子化する。このメソッドは、マウスの下のピクセル位置に対応するドメイン内の値を決定するなど、対話に役立ちます。

console.log(colorScale.invertExtent("#fdae61"));//returns [25, 37.5] 

がチェック:これは、例えば、カラー#fdae61にドメイン範囲を取得します

var colorScale = d3.scale.quantize() 
    .domain([0, 100]) 
    .range(["#d73027", "#f46d43", "#fdae61", "#fee090", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4"]); 

だから、我々は0から100まで行くのドメインを持っていると仮定スニペット:

var colorScale = d3.scale.quantize() 
 
    .domain([0, 100]) 
 
    .range(["#d73027", "#f46d43", "#fdae61", "#fee090", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4"]); 
 
\t \t 
 
\t \t 
 
console.log(colorScale.invertExtent("#fdae61")); 
 
console.log(colorScale.invertExtent("#fee090"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

+0

ありがとうございました。値を取得するために色を追加することなく、自動的に ''#fdae61 "'する方法はありませんか?ある色の範囲から別の色の範囲に入力色を変更する場合は、手動調整が必要です。 'RdYlBu'から' YlGn'まで言えます。 – Stophface

+0

特定の色に対応するドメイン値を取得したい場合、色を定義する必要があります...私はあなたが正確に何を望んでいるのか理解していません。もっと詳しく説明できますか? –

+0

私は凡例を作成するために色とその値が必要です。私が対応する値を得るためには正確な色が必要なので、あなたが説明した方法はむしろ「静的」な感じです。しかし、変数 'colorscale'を' ... range(colorbrewer.RdYlBu [8]); 'から' ... range(colorbrewer.YlGn [4]); 'に変更したいのですが?それは私に異なった色を与え、私の伝説は自動的に調整されません。この 'colorScale.invertExtent("#fdae61 ");'を 'colorScale.invertExtent("#f7fcb9 ")'に変更する必要があります。各ステートメントには新しい色のコードが必要です。 – Stophface

関連する問題