2017-11-21 6 views
2

私はこのトランジションの後にトランジションの一部でないトランジションを連鎖できますか?例えば

this.yAxis 
    .transition() 
    .call(this.createYAxis) 
    .attr('transform', `translate(${this.Axes.Y.offset}, 0)`); 

を行うことができますY軸ドメインを移行したい場合、私はまた同じ選択でテキストサイズを設定したいのですが、私は、テキストのサイズをアニメーション化する必要はありません。これは同じ鎖で可能ですか?だからここ

this.yAxis 
    .transition() 
    .call(this.createYAxis) 
    .attr('transform', `translate(${this.Axes.Y.offset}, 0)`); 

this.yAxis.selectAll('text') 
    .style('font-size', '15px') 
+0

あなたが行うことができます:。this.yAxis.selectAll( 'テキスト') .style( 'フォントサイズ'、 '15ピクセル').transition()の呼び出しを(this.createYAxis ) .attr( 'transform'、 'translate($ {this.Axes.Y.offset}、0)') – tejesh95

+0

いったん 'selectAll( 'text')'を選択すると、yAxisの選択肢はなくなります。 yAxisのテキスト。軸のテキスト要素で 'this.createYAxis'を呼び出すことはできません... –

+1

.transition()を呼び出すと、選択範囲がトランジションになります。だから、あなたの質問への答えはいいえです。あなたは2つの別々の呼び出しを使って遷移前にselectAllテキストをしなければなりません。 – tejesh95

答えて

4

この遷移に対応する選択を返すメソッドtransition.selection()があります。

この方法を使用すると、事前に開始された移行を事前にselection.transition()から解除することができます。これにより、トランジションの代わりにセレクションに作用する継続的なメソッド連鎖が可能になります。

var svg = d3.select("svg"); 
 

 
var scale = d3.scalePoint() 
 
    .domain(["foo", "bar", "baz"]) 
 
    .range([30, 270]); 
 

 
var axis = d3.axisBottom(scale); 
 

 
var gX = svg.append("g") 
 
    .transition() 
 
    .duration(1000) 
 
    .call(axis) 
 
    .attr("transform", "translate(0,50)") 
 
    .selection() // <-- get the selection corresponding to the transition 
 
    .style("font-size", "26px");
<script src="https://d3js.org/d3.v4.js"></script> 
 
<svg></svg>

1

が移行後に更新の実行例であるように今のインスタンス、

this.yAxis 
    .transition() 
    .call(this.createYAxis) 
    .attr('transform', `translate(${this.Axes.Y.offset}, 0)`) 
    //I don't want anything past this point to be a part of the transition 
    .selectAll('text') 
    .style('font-size', '15px'); 

のために、私はちょうど2つの別々の呼び出しを使用しています、今私はなぜ知りません誰もがこの特定のフォントの変更をしたいと思うだろうが、私は何かをオフにする必要があるときにこれを使用して、移行が終了し、thenそれを再びオンにする必要があります。 D3 V4のよう

var svg = d3.select("svg"); 
 

 
var scale = d3.scalePoint() 
 
    .domain(["foo", "bar", "baz"]) 
 
    .range([30, 270]); 
 

 
var axis = d3.axisBottom(scale); 
 

 
var gX = svg.append("g") 
 
    .transition() 
 
    .duration(1000) 
 
    .call(axis) 
 
    .attr("transform", "translate(0,50)") 
 
    .on('end',() => { 
 
     d3.selectAll('text') 
 
     .style('font-size', '15px') 
 
    });
<script src="https://d3js.org/d3.v4.min.js"></script> 
 
<svg></svg>

関連する問題