2016-07-27 8 views
1
全ての

最初: D3バージョン:"version": "3.5.17"強制的なグラフ再利用の失敗?

iはその近くに主題二differnetの種類、比例シンボルマップとシンボル(比例シンボルと同じ円)と擬似デマーズの統計地図を有しますできるだけ原点を衝突の検出と重力で検出します。

しかし、比例記号マップから円を動かしたいです。特に、私はちょうど衝突検出と重力のために私の力に向けられたグラフをトリガーしたいです。これは最初に正常に動作します。私はカートングラムから比例記号マップに戻るアニメーションを提供します。ここで各シンボルは重心に戻って移動します。今、もし私がカートログに戻ってほしいのであれば、コードは失敗し、Uncaught TypeError: Cannot read property '1' of undefinedと書かれています。これは、力の再利用性に何らかのバグですか?私の側に何らかのエラーがありますか?

ここで問題をテストすることができます:https://particles-masterthesis.github.io/aggregation/;左上に、比例記号とカートグラフィックを切り替えることができます。

iを使用している適切なコードは以下の通り: キー部iが統計地図と統計地図に比例シンボルマップ

間で同じオブジェクトを共有informationオブジェクトである case 'psm_cartogram': let psm = this.currentViz; information = { data: psm.nodes, symbols: psm.symbols }; upcomingViz.obj = this.canvas.drawCartogram( null, this.currentViz.constructor.name === "Cartogram", information, () => { this.currentViz.hide(false, true); this.fadeOutParticles(); } ); upcomingViz.type = 'cartogram'; resolve(upcomingViz); break;

` this.force = this.baseMap._d3.layout.force() .charge(0) .gravity(0) :、私は、次の重要なコードを有します.size([this.width - this.symbolPadding、this.height - this.symbolPadding]);

this.nodes = keepInformation.data; 
this.node = keepInformation.symbols; 

this.force 
.nodes(this.nodes) 
.on("tick", this.tick.bind(this, 0.0099)) 
.start(); 

...

tick(gravity) { 
    this.node 
    .each(this.gravity(gravity)) 
    .each(this.collide(0.25)) 
    .attr("cx", d => { return d.x; }) 
    .attr("cy", d => { return d.y; }); 
} 

gravity(k) { 
    return d => { 
     d.x += (d.x0 - d.x) * k; 
     d.y += (d.y0 - d.y) * k; 
    }; 
} 

//the collide function is not shown as it is a simple quadtree 

`

それはどのような方法で役立つ場合、コードも利用可能である​​3210でメインコードは、遷移マネージャと二種類あります地図の

私がチェックアウトできるシンプルなヒントであっても、私が得ることができる提案やサポートには感謝しています。

PS: image image

これらの2つのスクリーンショットです。最初のものはcartogram:132の異なるログに対して重要であり、重力などを実行する前にtick関数の中でconsole.log(this.node)であった。第2のものはエラーを言及している。

最初のログの詳細については、 tick機能でthis.nodeを記録することから開始します。その後、psmの視覚化の変更がトリガーされ(cartogram_psm)、後でカートログに戻ってエラーが表示されました。

答えて

0

いいので、私は私の問題を把握できます。

遷移連鎖は私の方法で間違っていたので、オブジェクトの神秘的な属性が登場。

この方法ですべてのトランジションを書き直すと(https://stackoverflow.com/a/17101823/1472902

関連する問題