1

私はコロプレスマップを作成するためにd3(使い方を学ぶようなもの)を使用しています。データと geojson オブジェクトを読み込んでマップを表示することはできましたが、いくつかのトランジションと、ユーザーがデータを選択できる機能を追加したいと考えています。

これまでに私が持っているものの例を次に示します (github と Mike Bostock の素晴らしい Gist ビューアーに感謝します):

http://bl.ocks.org/4131166 ; および http://gist.github.com/4131166

関連するクラスをグループに変更することで色を変更することができましたが、それらの間で移行したかったので、これを Cynthia Brewer の色の js バージョンに交換しました。また、別の「バンド」が選択されたときに色を変更したいと考えています。

私の問題は updateValues 関数にあると思います-やりすぎです。データの読み込み、ポリゴンの描画、色の設定を一度に行います。

ポリゴンを描画してから、別の関数で色を関連付けることは可能ですか?

私は次のものを追加するというアイデアをいじっていました:

.attr("id", function(d) { return d.id; })

パスを描画するステートメントに行を追加し、それを使用して別のステートメントのデータにリンクしますが、これをどのように達成するかはよくわかりません-どうにかして各パスのIDを取得してデータにリンクすると思います. ..?

どんな助けでも感謝します。それが私のコードを改善する方法についての提案であっても。関連する場合は、常にベストプラクティスを順守してください。

4

1 に答える 1

4

d3 の核となるのはソリューションです。d3.selectAll( ... ).data( ... )あなたが得るものをするときはいつでも選択です。

選択範囲内のすべてのノードに影響を与えるには、さまざまな d3 関数をチェーンします。

サブセレクションのためにチェーンする特別な関数が他に 2 つあります:enter()新しいノードexit()用と、もはや存在しないノード用です。

基になるデータを更新する場合は、トップ レベルを呼び出すとd3.selectAll( ... ).data( ... )、選択 (すべてのノード)、入力 (追加されるノード)、終了 (削除されるノード) の 3 つのチェーンに従って DOM ノードが更新されます。

したがって、選択チェーンに色を設定し、入力しないでください。再作成せずに更新されます。

于 2012-11-23T02:20:32.230 に答える