d3JSの力指向グラフで強調表示されているすべてのノードの色を変更するにはどうすればよいですか?

ヴィヴェーク

既存の機能:

任意のノードにマウスを合わせると、接続されているすべてのノードが強調表示されます。

期待される出力:

マウスをいずれかのノードに合わせると、接続されているすべてのノードが強調表示されますが、強調表示されたノードは同じ色で、マウスを離すと前の状態に戻る必要があります。

この機能を実装しようとしていますが、期待どおりに機能しません。

ここで動作するコードスニペットを参照してください:jsfiddle

function selectNode(selectedNode) {
  var neighbors = getNeighbors(selectedNode)

  nodeElements.transition().duration(500)
  .attr('r', function(node) {
        return getNodeRadius(node,neighbors);
   })

    .attr('fill', function(node) {
        return getNodeColor(node,neighbors);
   })


   textElements.transition().duration(500).style('font-size', function(node) {
    return getTextColor(node, neighbors)
  })


  linkElements.transition().duration(500).style('stroke', function(link) {
    return getLinkColor(selectedNode, link)
  })
}

function getNodeColor(node, neighbors) {
  // If is neighbor
  if (Array.isArray(neighbors) && neighbors.indexOf(node.id) > -1) {
    return 'rgba(123, 239, 178, 1)'
       .attr('fill', function(d, i) { return 'url(#grad' + i + ')'; })
    // return node.level === 1 ? '#9C4A9C' : 'rgba(251, 130, 30, 1)'
  }  else {
      return color(node.id);
  }
  //return node.level === 0 ? '#91007B' : '#D8ABD8'
}



 var nodeElements =  g.append("g")
  .attr("class", "nodes")
  .selectAll("circle")
  .data(graph.nodes)
  .enter().append("circle")
  .attr("r", 60)

  .attr("stroke", "#fff")
  .attr('stroke-width', 21)
  .attr("id", function(d) { return d.id })
   //.attr("fill", function(d) {return color(d.id)}) 
     .attr('fill', function(d, i) { return 'url(#grad' + i + ')'; })
     .on('contextmenu', function(d){ 
        d3.event.preventDefault();
        menu(d3.mouse(svg.node())[0], d3.mouse(svg.node())[1]);
    })
      .on('mouseover', selectNode)
      .on('mouseout', releaseNode)
  .call(d3.drag()
    .on("start", dragstarted)
    .on("drag", dragged)
    .on("end", dragended));
プラザンナ

コードを変更する必要がある場所は5つあります。

1つselectNode目と2つ目はコメントを探す

function selectNode(selectedNode) {
    var neighbors = getNeighbors(selectedNode)

    nodeElements.transition().duration(500)
    .attr('r', function(node) {
        return getNodeRadius(node,neighbors);
    });
    // do not use transition here, it kinda ruins the flavour  
    // or see if you like it with transitions, your call  
    nodeElements.attr('fill', function(node) {
        // send selectedNode to your getNodeColor
        return getNodeColor(node,neighbors,selectedNode);
    })
}

ご想像のとおり、3番目と4番目のものは getNodeColor

function getNodeColor(node, neighbors, selectedNode) {
    if (Array.isArray(neighbors) && neighbors.indexOf(node.id) > -1) {
        return 'url(#grad' + selectedNode.index + ')'
    }  else {
        // use gradient here
        return 'url(#grad' + node.index + ')'
    }
}

最後のものはあなたになります releaseNode

function releaseNode() {
    nodeElements.transition().duration(500)
        .attr('r', 60);

    // don't use transitions here
    // or see if you like it with transitions, your call  
    nodeElements.attr('fill', function(d, i) { return 'url(#grad' + i + ')'; })

    linkElements.transition().duration(500).style('stroke', 'grey');
}

これがあなたが実験するための実用的なフィドルです

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Eclipseのサイドバーで強調表示されているオカレンスの色を変更するにはどうすればよいですか?

分類Dev

Pythonでグループに基づいてラベルの色を強調表示/変更するにはどうすればよいですか?

分類Dev

ノードがドラッグされたときにd3jsの力指向グラフの揺れを少なくするにはどうすればよいですか?

分類Dev

UIButtonの強調表示された色を変更するにはどうすればよいですか?

分類Dev

PhpStormで強調表示されている紫色の「重複コードフラグメント」を削除するにはどうすればよいですか?

分類Dev

ファイルがドラッグされている唯一のdivを強調表示するにはどうすればよいですか?

分類Dev

d3の力指向グラフに新しいノードのみを追加するにはどうすればよいですか?

分類Dev

D3jsの力指向グラフでノードのハイライトと遷移効果を実装するにはどうすればよいですか?

分類Dev

PhpStorm 10で強調表示されたhtmlタグの色を変更するにはどうすればよいですか?

分類Dev

d3 jsでルートから選択したノードへのパスを強調表示するにはどうすればよいですか?

分類Dev

BXSlider、表示されているスライドに応じて、CSSまたはDIVの色を変更するにはどうすればよいですか?

分類Dev

D3ツリー-ツリーを展開して同じ名前のすべてのノードを表示および強調表示するにはどうすればよいですか?

分類Dev

すべてのスライドでioslidesのデフォルトのフォントの色を変更するにはどうすればよいですか?

分類Dev

D3力レイアウトグラフのノードとして画像を追加するにはどうすればよいですか?

分類Dev

クリックされた変数のすべてのインスタンスを強調表示するにはどうすればよいですか?

分類Dev

強調表示されているUIButtonの背景色を変更するにはどうすればよいですか?

分類Dev

Eclipseで、選択したコンソールテキストの強調表示色の色を変更するにはどうすればよいですか?

分類Dev

強調表示されていないすべての行を非表示にするにはどうすればよいですか?

分類Dev

MouseOverのMenuItem / ContextMenuの強調表示された色を削除/変更するにはどうすればよいですか?

分類Dev

Emacsのlispモードですべての関数の名前を強調表示するにはどうすればよいですか?

分類Dev

javascriptの正規表現を使用して、指定されたすべての特定の文字を強調表示するにはどうすればよいですか?

分類Dev

表示したいすべてのノードが表示されるようにajaxパーサーを修正するにはどうすればよいですか?

分類Dev

Outlook 2010ですべての休日の色を変更するにはどうすればよいですか?

分類Dev

特定のブランチで変更されたすべてのファイルを一覧表示するにはどうすればよいですか?

分類Dev

グループ棒グラフの色を変更するにはどうすればよいですか?

分類Dev

Summernoteのデフォルトのテキスト強調表示色を変更するにはどうすればよいですか?

分類Dev

UIImageのすべての色を灰色に変更するにはどうすればよいですか?

分類Dev

テキスト内のすべてのキーワードを強調表示するにはどうすればよいですか?

分類Dev

何も変更されていないのに、githubがすべてのコードを赤/緑に強調表示するのはなぜですか?

Related 関連記事

  1. 1

    Eclipseのサイドバーで強調表示されているオカレンスの色を変更するにはどうすればよいですか?

  2. 2

    Pythonでグループに基づいてラベルの色を強調表示/変更するにはどうすればよいですか?

  3. 3

    ノードがドラッグされたときにd3jsの力指向グラフの揺れを少なくするにはどうすればよいですか?

  4. 4

    UIButtonの強調表示された色を変更するにはどうすればよいですか?

  5. 5

    PhpStormで強調表示されている紫色の「重複コードフラグメント」を削除するにはどうすればよいですか?

  6. 6

    ファイルがドラッグされている唯一のdivを強調表示するにはどうすればよいですか?

  7. 7

    d3の力指向グラフに新しいノードのみを追加するにはどうすればよいですか?

  8. 8

    D3jsの力指向グラフでノードのハイライトと遷移効果を実装するにはどうすればよいですか?

  9. 9

    PhpStorm 10で強調表示されたhtmlタグの色を変更するにはどうすればよいですか?

  10. 10

    d3 jsでルートから選択したノードへのパスを強調表示するにはどうすればよいですか?

  11. 11

    BXSlider、表示されているスライドに応じて、CSSまたはDIVの色を変更するにはどうすればよいですか?

  12. 12

    D3ツリー-ツリーを展開して同じ名前のすべてのノードを表示および強調表示するにはどうすればよいですか?

  13. 13

    すべてのスライドでioslidesのデフォルトのフォントの色を変更するにはどうすればよいですか?

  14. 14

    D3力レイアウトグラフのノードとして画像を追加するにはどうすればよいですか?

  15. 15

    クリックされた変数のすべてのインスタンスを強調表示するにはどうすればよいですか?

  16. 16

    強調表示されているUIButtonの背景色を変更するにはどうすればよいですか?

  17. 17

    Eclipseで、選択したコンソールテキストの強調表示色の色を変更するにはどうすればよいですか?

  18. 18

    強調表示されていないすべての行を非表示にするにはどうすればよいですか?

  19. 19

    MouseOverのMenuItem / ContextMenuの強調表示された色を削除/変更するにはどうすればよいですか?

  20. 20

    Emacsのlispモードですべての関数の名前を強調表示するにはどうすればよいですか?

  21. 21

    javascriptの正規表現を使用して、指定されたすべての特定の文字を強調表示するにはどうすればよいですか?

  22. 22

    表示したいすべてのノードが表示されるようにajaxパーサーを修正するにはどうすればよいですか?

  23. 23

    Outlook 2010ですべての休日の色を変更するにはどうすればよいですか?

  24. 24

    特定のブランチで変更されたすべてのファイルを一覧表示するにはどうすればよいですか?

  25. 25

    グループ棒グラフの色を変更するにはどうすればよいですか?

  26. 26

    Summernoteのデフォルトのテキスト強調表示色を変更するにはどうすればよいですか?

  27. 27

    UIImageのすべての色を灰色に変更するにはどうすればよいですか?

  28. 28

    テキスト内のすべてのキーワードを強調表示するにはどうすればよいですか?

  29. 29

    何も変更されていないのに、githubがすべてのコードを赤/緑に強調表示するのはなぜですか?

ホットタグ

アーカイブ