マウスオーバーイベントでd3円グラフにテキストを追加する

user159941

円グラフにmouseoverバインドされているデータだけでなく、円グラフに多くのテキストを表示する方法を見つけようとしています以下は私の関数型コードです

function Pie(value,names){

svg.selectAll("g.arc").remove()

var outerRadius = 100;
        var innerRadius = 0;
        var arc = d3.svg.arc()
                .innerRadius(innerRadius)
                .outerRadius(outerRadius);

    var pie = d3.layout.pie();
    var color = d3.scale.category10();
    var arcs = svg.selectAll("g.arc")
              .data(pie(value))
              .enter()
              .append("g")
              .attr("class", "arc")
              .attr("transform", "translate(950,80)");

    arcs.append("path")
            .attr("fill", function(d, i) {
                return color(i);
            })
            .attr("d", arc)
            .on("mouseover",function(d,i) {
             arcs.append("text")
                .attr("dy", ".5em")
                .style("text-anchor", "middle")
                .style("fill", function(d,i){return "black";})
                .text(d.data)
            })

            .on("mouseout", function(d) {

                arcs.select("text").remove();
            });}

names配列は同じ長さを有するvalueパイに渡される配列。上記を置き換えることで、このようなことがうまくいくことを本当に望んでいましたmouseover

.on("mouseover",function(d,i) {
             arcs.append("text")
                .attr("dy", ".5em")
                .style("text-anchor", "middle")
                .style("fill", function(d,i){return "black";})
                .text(function(d,i){return (d.data +" " + names[i]);)
            })

しかし、それが行う唯一のことは、values配列のすべての要素を積み重ねて表示し、配列の最後の要素を表示することnamesです。iこの場合、それが常に最後のインデックスであるように思われます。どうすればいいですか?別の方法で必要なテキストを表示できますか?前もって感謝します。

マーク

まず、変数arcsは、円のすべての円弧を表すデータバインドされたd3選択です。したがって、を呼び出すarcs.appendことtextにより、円グラフの各部分に要素を追加しますtextマウスオーバーした内容に基づいて1つの要素のみを追加することを意味していると思いますので、次のように書き直してください。

svg.append('text')
  ...

次に、この式では次のようになります。

.text(function(d,i){return (d.data +" " + names[i]);)

diマウスオーバー機能すでにビーイングは、マウスオーバー円スライスのデータとインデックスを表します。これを別の関数でラップする理由はなく、書き直す必要があります。

.text(d.data +" " + names[i]);

完全な例を次に示します。

<!DOCTYPE html>
<meta charset="utf-8">
<style>
  body {
    font: 10px sans-serif;
  }
  
  .arc path {
    stroke: #fff;
  }
</style>

<body>
  <script src="//d3js.org/d3.v3.min.js"></script>
  <script>
    var width = 960,
      height = 500,
      radius = Math.min(width, height) / 2;

    var color = d3.scale.category10();

    var arc = d3.svg.arc()
      .outerRadius(radius - 10)
      .innerRadius(0);

    var pie = d3.layout.pie()
      .sort(null)
      .value(function(d) {
        return d.value;
      });

    var svg = d3.select("body").append("svg")
      .attr("width", width)
      .attr("height", height)
      .append("g")
      .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");

    var data = [{
      value: Math.random(),
    }, {
      value: Math.random(),
    }, {
      value: Math.random(),
    }, {
      value: Math.random(),
    }, {
      value: Math.random(),
    }]
    
    var names = ["A","B","C","D","E"];

    var arcs = svg.selectAll(".arc")
      .data(pie(data))
      .enter().append("g")
      .attr("class", "arc");

    arcs.append("path")
      .attr("d", arc)
      .style("fill", function(d,i) {
        return color(i);
      })
      .on("mouseover", function(d, i) {
          console.log(d);
          svg.append("text")
            .attr("dy", ".5em")
            .style("text-anchor", "middle")
            .style("font-size", 45)
            .attr("class","label")
            .style("fill", function(d,i){return "black";})
            .text(names[i]);
          
      })
      .on("mouseout", function(d) {
        svg.select(".label").remove();
      });
    
  </script>

</body>

</html>

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

マウスオーバー時にD3塗りつぶし円グラフセグメント

分類Dev

D3でオンラインにテキストを追加する方法は?

分類Dev

マウスをクリック&ドラッグせずに、d3を使用して連続線を描画するにはどうすればよいですか?マウスオーバーイベントを使用するだけですか?

分類Dev

マウスオーバーイベントのドーナツグラフにテキストを表示する方法

分類Dev

D3マウスオーバーでテキストを追加するにはどうすればよいですか?

分類Dev

マウスオーバーイベントで棒グラフを遷移するときの「TypeError:d isundefined」

分類Dev

強制有向グラフのd3ノードにテキストラベルを追加し、ホバー時にサイズを変更します

分類Dev

円グラフでマウスオーバーを使用し、d3 v3jsでラベルを表示します

分類Dev

円グラフでマウスオーバーを使用し、d3jsでラベルを表示します

分類Dev

d3力レイアウトグラフのノード上にテキストを表示する

分類Dev

svgをdivに追加すると、d3マウスオーバーイベントが発生しません

分類Dev

d3マウスイベント、クリック時に円を追加

分類Dev

D3で折れ線グラフインタラクティブにマウスオーバーする方法

分類Dev

Forceレイアウトのd3ノードにテキストラベルを追加します

分類Dev

d3のアイテムのペアでマウスオーバーイベントをどのように実行しますか?

分類Dev

ラベルに行を追加するD3円グラフのレイアウトについてサポートが必要

分類Dev

ホバーテキストボックス付きの円をd3.jsマルチラインチャートに追加するにはどうすればよいですか?

分類Dev

D3水平に積み上げられた棒グラフにテキストラベルを追加する

分類Dev

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

分類Dev

D3.jsでマウスオーバー時に円グラフの他のセグメントを変更するにはどうすればよいですか?

分類Dev

D3ドーナツグラフの中央にテキストを追加する

分類Dev

マウスオーバーd3jsでSVGテキストのテキストを変更する

分類Dev

D3マウスオーバーで円を長方形に変更する方法

分類Dev

ボタンクリックとマウスオーバー/マウスアウトでノードテキストを表示および非表示にする方法は?D3 / JS

分類Dev

Chromeでマウスオーバー/マウスアウトイベントをトリガーするd3.dragを停止する方法

分類Dev

D3を使用してSVG円グラフを生成するテキストを垂直方向に配置する方法

分類Dev

d3テキストの背後にあるオブジェクトでイベントをトリガーする方法

分類Dev

ハイチャート:円グラフの中央にテキストラベルを配置する方法

分類Dev

Rect要素にマウスオーバーイベントをリコールさせるテキスト要素

Related 関連記事

  1. 1

    マウスオーバー時にD3塗りつぶし円グラフセグメント

  2. 2

    D3でオンラインにテキストを追加する方法は?

  3. 3

    マウスをクリック&ドラッグせずに、d3を使用して連続線を描画するにはどうすればよいですか?マウスオーバーイベントを使用するだけですか?

  4. 4

    マウスオーバーイベントのドーナツグラフにテキストを表示する方法

  5. 5

    D3マウスオーバーでテキストを追加するにはどうすればよいですか?

  6. 6

    マウスオーバーイベントで棒グラフを遷移するときの「TypeError:d isundefined」

  7. 7

    強制有向グラフのd3ノードにテキストラベルを追加し、ホバー時にサイズを変更します

  8. 8

    円グラフでマウスオーバーを使用し、d3 v3jsでラベルを表示します

  9. 9

    円グラフでマウスオーバーを使用し、d3jsでラベルを表示します

  10. 10

    d3力レイアウトグラフのノード上にテキストを表示する

  11. 11

    svgをdivに追加すると、d3マウスオーバーイベントが発生しません

  12. 12

    d3マウスイベント、クリック時に円を追加

  13. 13

    D3で折れ線グラフインタラクティブにマウスオーバーする方法

  14. 14

    Forceレイアウトのd3ノードにテキストラベルを追加します

  15. 15

    d3のアイテムのペアでマウスオーバーイベントをどのように実行しますか?

  16. 16

    ラベルに行を追加するD3円グラフのレイアウトについてサポートが必要

  17. 17

    ホバーテキストボックス付きの円をd3.jsマルチラインチャートに追加するにはどうすればよいですか?

  18. 18

    D3水平に積み上げられた棒グラフにテキストラベルを追加する

  19. 19

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

  20. 20

    D3.jsでマウスオーバー時に円グラフの他のセグメントを変更するにはどうすればよいですか?

  21. 21

    D3ドーナツグラフの中央にテキストを追加する

  22. 22

    マウスオーバーd3jsでSVGテキストのテキストを変更する

  23. 23

    D3マウスオーバーで円を長方形に変更する方法

  24. 24

    ボタンクリックとマウスオーバー/マウスアウトでノードテキストを表示および非表示にする方法は?D3 / JS

  25. 25

    Chromeでマウスオーバー/マウスアウトイベントをトリガーするd3.dragを停止する方法

  26. 26

    D3を使用してSVG円グラフを生成するテキストを垂直方向に配置する方法

  27. 27

    d3テキストの背後にあるオブジェクトでイベントをトリガーする方法

  28. 28

    ハイチャート:円グラフの中央にテキストラベルを配置する方法

  29. 29

    Rect要素にマウスオーバーイベントをリコールさせるテキスト要素

ホットタグ

アーカイブ