トランジションに関するd3ドキュメントでは、サブトランジションバージョンが現在のトランジションからイージング、期間、および遅延を継承すると言っているのtransition.select(selector)
とほぼ同じです。selection.select(selector).transition()
両方のアプローチを使用した私の観察では、サブトランジションは実際には、ドキュメントが示すよりも親トランジションとわずかに深い関係を持っている必要があります。私が見たのは、互いに非常に密接に関連している2つのトランジションがある場合、両方のトランジションを完全に一緒に実行するには、サブトランジションを使用する必要があるということです。
これは、要点を説明するために考案された例です(ただし、これは十分に単純なので、実際には問題が表示されない可能性があります)。私のDOMにこれがあるとしましょう:
<g>
<circle></circle>
</g>
トランジション1が実行され<g>
、「transform = translate(100,0)」を適用して水平方向に移動します。
トランジション2は実行され<circle>
、「transform = translate(-100、0)」を適用してこれを逆にし、反対方向に水平方向に戻します。
期待される結果は、円がまったく動かないことです。しかし、実際に何が表示されるかは、トランジションがどのように設定されているかによって異なります。継続時間などに同じプロパティで構成された2つの別々の遷移を使用すると、円がわずかにジッターしているように見えます。おそらくこれは、遷移補間器に渡される中間値がわずかに同期していないためです。
ただし、サブトランジションを使用して2つのトランジションを設定すると、完璧に見えます。
私の質問は、トランジションとサブトランジションの関係についてです。個別のトランジションを使用する場合とサブトランジションを使用する場合のタイミングと補間の違いは何ですか?