2016-08-09 23 views
0

d3でバブル​​チャートを作成していますが、バブルの色はlogFC値に基づいていますローカルjsonファイル。d3.js、d3.extentを使用してnest json値の最小値/最大値を見つける

私のJSONファイルは次のようになります。

{ 
    "name": "genes", 
    "children": [  
    { 
     "value": "9.57E-06", 
     "logFC": "-5.51658163", 
     "symbol": "BCHE", 
    }, 
    { 
     "value": "0.0227", 
     "logFC": "3.17853632", 
     "symbol": "GRIA2", 
    }, 
    { 
     "value": "0.00212", 
     "logFC": "-2.8868275", 
     "symbol": "GRIN2A", 
    } 
    ] 
} 

ファイルは私がd3.extentとリーフノードを参照してトラブルを抱えていると思う理由である平坦ではありません。

var color1 = d3.scale.linear() 
     .domain([-5.51658163,3.17853632]) //manually putting in min/max into the domain 
     .range(["lightgreen", "green"]); 

しかし、私のデータが変更され、および動的なコードを作るために - 私は他の多くのバリエーションと一緒に、次の試してみた:私は、私が使用することができます知っている基本的

var color1 = d3.scale.linear() 
     .domain([d3.extent(d3.values(data, function(data) { return +d.logFC;}))]) 
     .range(["lightgreen", "green"]); 

、イム苦労リーフノードでd3.extentを使用します。 logFCの最小値と最大値を見つけるためにd3.extentを使って最小値と最大値を見つける簡単な方法はありますか?

ありがとうございました!

(括弧に問題がある場合はPSはそれが疑問ボックスに自分のデータをコピーするときに私が作った間違いだった)

私はコンソールエディタで見ると、私は次を参照してください。

enter image description here

答えて

3

基本的にd3.extentは値の配列を受け取り、その境界を配列として返します。私は上記のあなたの例ではdata変数が何であるかを知らない原因

100%わからない(無角括弧)

.domain(d3.extent(d3.values(data, function(data) { 
    return +d.logFC; 
}))) 

:だから私はあなたのコードがより多くのようにする必要がありますね。


更新:データ変数がロードされたJSON objがある

場合は、次の操作を行います。

.domain(d3.extent(data.children.map(function(child) { 
    return +child.logFC; 
}))) 
+0

私はデータ変数は単なるデータであると信じています。 – gsol

関連する問題