2016-04-26 10 views
1

お時間をいただきありがとうございます。 私は、iframeに存在するビジュアライゼーションを持ち、親ページから変数を取得します。この変数は、描画する行を定義します。私はそれを行うことができたし、それは働いている。 私の問題は、私が線を描いている時に私がフィルタリングしていることです。それは動作しますが、私は私の選択したエンティティの最小値と最大値を反映するために、私のYスケール軸ドメインをしたい場合は助けにはならないので、私は必要のいずれかに:解析時のデータをフィルタリングする

  • フィルタ以前のデータを解析中に(望ましい)
  • は私のライン機能

私は本当に、残念ながらそれを達成する方法がわからない中で、私が持っている変数引きを繰り返す私のYスケール軸ドメインでフィルタ機能を持っています。私はここにフィルタリングコードで https://plnkr.co/edit/mtRewHwcRjQiIS4ymzoW

rank.append("path") 
.attr("clip-path", "url(#clipA)") 
.filter(function(d) { return d.name === guid }) 
.attr("class", "line") 
.attr("d", function(d) {return line(d.values); }) 
.style("stroke", "#158fcf");  
}); 

私はここにYスケール軸のための私の最大値と最小値を引く:

xScale.domain(d3.extent(data, function(d) {return +d.date; })); 

    yScale.domain([ 
    d3.min(ranks, function(c) { return d3.min(c.values, function(v) { return v.rank; }); }), 
    d3.max(ranks, function(c) { return d3.max(c.values, function(v) { return v.rank; }); }) 
    ]); 

そしてこの 私はここplunkを持っています私は自分のデータを解析します:

// Read in data 
d3.csv("data.csv", function(error, data){ 
if (error) throw error; 

color.domain(d3.keys(data[0]).filter(function(key) { return key !== "date"; })); 

// Format the data field 
data.forEach(function(d){ 
d.date = parseDate(d.date); 
}); 

var ranks = color.domain().map(function(name){ 
return { 
name: name, 
values: data.map(function(d){ 
return {date: d.date, rank: +d[name]}; 
}) 
}; 
}); 

助けていただきありがとうございます!

答えて

0

rankがデータとしてranksを使用しているので、あなたが同じフィルタを使用することができます。そして、

var ranksFiltered = ranks.filter(function(d) { return d.name === guid }); 

を、あなたはYSCALEエクステントのためにそれを使用します。ここでは

yScale.domain([ 
    d3.min(ranksFiltered, function(c) { return d3.min(c.values, function(v) { return v.rank; }); }), 
    d3.max(ranksFiltered, function(c) { return d3.max(c.values, function(v) { return v.rank; }); }) 
    ]); 

はPlunkerです:https://plnkr.co/edit/dx2CFXbvXJOEJUrFhYwI?p=preview

+0

あなたは男です!どうもありがとうございます! –

関連する問題