インデックスなしで隣接するD3力グラフ(自己を含む)

ジョーイ

この例の後にD3フォースモデルを基にしています。Hはハイライト用です。私のJSONデータは、ノードプロパティとして指定されたデフォルトのインデックスではなく、ターゲット/ソースとしてIDを使用するため、フォーマットが異なります。

私のJSONのサンプル:

{
"nodes": [
    {"fixed":true,"data": {"id": "foo","idType":"USERNAME","visible":true },"grabbable": true,"grabbed":false},
    {"fixed":true,"data": {"id": "bar","idType":"USERNAME","visible":true },"grabbable": true}
],
"links": [
    {classes":null,"data":{"color":"blue"","source":"foo","target":"bar","visible":true},"grabbable":false},
    {classes":null,"data":{"color":"blue"","source":"bar","target":"foo","visible":true},"grabbable":false}
]
}

ご覧のとおり、データ内にターゲットとソースの両方があり、タイプとしてIDを使用しています。今ここで私はハイライトを機能させるのに苦労しています。隣接するノードとリンクを強調表示する場所にありますが、何らかの理由でノード自体が強調表示されたままになりません。変更が必要だと思うものに下の矢印を追加しましたが、問題が何であるかはまったくわかりません。

    // sets the source and target to use id instead of index
    var edges = [];
    root.links.forEach(function(e) {
        var sourceNode = root.nodes.filter(function(n) {
                    return n.data.id === e.data.source;
                })[0],
                targetNode = root.nodes.filter(function(n) {
                    return n.data.id === e.data.target;
                })[0];

        edges.push({
            source: sourceNode,
            target: targetNode
        });
    });


    // Create an array logging what is connected to what
    var linkedByIndex = { };


    // array algorithm for what is connected to what
    for (var i = 0; i < root.nodes.length; i++) {
        linkedByIndex[i + "," + i] = 1;
    };
    root.links.forEach(function (d) {
        linkedByIndex[d.data.source + "," + d.data.target] = 1;
    });


    // This function looks up whether a pair are neighbors
    function neighboring(a, b) {
        return linkedByIndex[a.data.id + "," + b.data.id]; <<<<<<<<<<<<<
    }


    function connectedNodes() {
        //Reduce the opacity of all but the neighboring nodes
        d = d3.select(this).node().__data__;
        node.style("opacity", function (o) {
            return neighboring(d, o) | neighboring(o, d) ? 1 : 0.1;
        });

        link.style("opacity", function (o) {
            return d.index==o.source.index| d.index==o.target.index ? 1 : 0.1;
        });
    }

私はそれをいじってみましたが、私のアルゴリズムの何が問題なのかわかりません。

ジョーイ

理解した。選択したノードを変更する次の行を接続ノード機能の最後に追加します

追加されたコード

return d3.select(this).style("opacity",1);

だから今それは次のように見えます...

function connectedNodes() {

        // Reduce the opacity of all but the neighbouring nodes
        // Ternary operator. condition | condition ? value if true : value if false
        // the | means or
        d = d3.select(this).node().__data__;
        node.style("opacity", function (o) {
            return neighboring(d, o) | neighboring(o, d) ? 1 : 0.1;

        });

        link.style("opacity", function (o) {
            return d.index==o.source.index | d.index==o.target.index ? 1 : 0.1;
        });

        // Maintains opacity of selected node.
        return d3.select(this).style("opacity",1);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ループなしで隣接する値にインデックスを付ける

分類Dev

2レベルのネストされたJSONを使用してポイントを含むD3折れ線グラフを作成する

分類Dev

パンダ:隣接する棒を含む積み上げ棒グラフ

分類Dev

D3の力指向グラフで複数のベジェ接続エッジを描画する

分類Dev

スタイリングノードラベルがd3力指向グラフで機能しない

分類Dev

新しいThinkpadYoga 14で動作しないいくつかの入力デバイス(トラックポイント/トラックパッドを含む)

分類Dev

半径内の隣接する要素のインデックスを取得します

分類Dev

d3円グラフにクロックポイントを追加する

分類Dev

numpyで隣接しない複数の範囲にインデックスを付ける

分類Dev

隣接する1つの色でのインデックスカラーリング問題の最適化が許可されました

分類Dev

D3を使用した拡張可能なノードを含むグラフ

分類Dev

d3のドロップダウンでインデックスではなくキーを介してデータを変更する方法

分類Dev

ulのliのインデックスですが、JqueryではなくD3を使用しています

分類Dev

インデックスを含む行列と列ベクトル、ループなしで反復する方法は?

分類Dev

インデックスを含む辞書を使用してNumPy配列にデータを入力する

分類Dev

D3は異なる要素を追加し、共通のインデックスを維持します

分類Dev

データをフィルタリングしてD3.jsスタック棒グラフにデータを入力する方法は?

分類Dev

JavaScript D3円グラフは、辞書のリストを含むJSONファイルからデータをプルしません

分類Dev

D3 の子で親のインデックスを使用する

分類Dev

ボタンクリックでスタイリングを動的に更新、D3棒グラフ

分類Dev

D3で異なる入力ファイルを使用して複数のグラフを視覚化する方法は?

分類Dev

numpyの基本/高度な混合インデックスがスライスの隣接性に依存するのはなぜですか?

分類Dev

returnメソッドを使用して隣接するインデックスの値を交換する

分類Dev

Shinyで、テキストではなく列名にアイコンを含む選択に基づいて、アイコンのチェックボックスグループ入力を追加してデータテーブルを作成するにはどうすればよいですか?

分類Dev

D3値キーは、enter()を使用する場合のデフォルトのインデックス番号と同じ方法で一致しますか?

分類Dev

1D配列で連続するフラグ値のインデックスを検索します

分類Dev

行列をフラット化して、値のインデックス位置を含む配列にします

分類Dev

d3チェックボックスを介したデータポイントのフィルタリングが正常に機能しない

分類Dev

mod_auth_openidcを含むフォルダーではなくファイルを表示するApacheディレクトリインデックス

Related 関連記事

  1. 1

    ループなしで隣接する値にインデックスを付ける

  2. 2

    2レベルのネストされたJSONを使用してポイントを含むD3折れ線グラフを作成する

  3. 3

    パンダ:隣接する棒を含む積み上げ棒グラフ

  4. 4

    D3の力指向グラフで複数のベジェ接続エッジを描画する

  5. 5

    スタイリングノードラベルがd3力指向グラフで機能しない

  6. 6

    新しいThinkpadYoga 14で動作しないいくつかの入力デバイス(トラックポイント/トラックパッドを含む)

  7. 7

    半径内の隣接する要素のインデックスを取得します

  8. 8

    d3円グラフにクロックポイントを追加する

  9. 9

    numpyで隣接しない複数の範囲にインデックスを付ける

  10. 10

    隣接する1つの色でのインデックスカラーリング問題の最適化が許可されました

  11. 11

    D3を使用した拡張可能なノードを含むグラフ

  12. 12

    d3のドロップダウンでインデックスではなくキーを介してデータを変更する方法

  13. 13

    ulのliのインデックスですが、JqueryではなくD3を使用しています

  14. 14

    インデックスを含む行列と列ベクトル、ループなしで反復する方法は?

  15. 15

    インデックスを含む辞書を使用してNumPy配列にデータを入力する

  16. 16

    D3は異なる要素を追加し、共通のインデックスを維持します

  17. 17

    データをフィルタリングしてD3.jsスタック棒グラフにデータを入力する方法は?

  18. 18

    JavaScript D3円グラフは、辞書のリストを含むJSONファイルからデータをプルしません

  19. 19

    D3 の子で親のインデックスを使用する

  20. 20

    ボタンクリックでスタイリングを動的に更新、D3棒グラフ

  21. 21

    D3で異なる入力ファイルを使用して複数のグラフを視覚化する方法は?

  22. 22

    numpyの基本/高度な混合インデックスがスライスの隣接性に依存するのはなぜですか?

  23. 23

    returnメソッドを使用して隣接するインデックスの値を交換する

  24. 24

    Shinyで、テキストではなく列名にアイコンを含む選択に基づいて、アイコンのチェックボックスグループ入力を追加してデータテーブルを作成するにはどうすればよいですか?

  25. 25

    D3値キーは、enter()を使用する場合のデフォルトのインデックス番号と同じ方法で一致しますか?

  26. 26

    1D配列で連続するフラグ値のインデックスを検索します

  27. 27

    行列をフラット化して、値のインデックス位置を含む配列にします

  28. 28

    d3チェックボックスを介したデータポイントのフィルタリングが正常に機能しない

  29. 29

    mod_auth_openidcを含むフォルダーではなくファイルを表示するApacheディレクトリインデックス

ホットタグ

アーカイブ