D3 v6 のマウスオーバー イベント中にノード データを取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-24 07:46:01
オリジナル
535 人が閲覧しました

How to Grab Node Datum During Mouseover Events in D3 v6?

D3 v6 で、マウスオーバー イベント中にノード データムを取得する方法

D3 v6 以降では、選択を使用してノードのバインドされたデータムを取得します。 on() は以前のバージョンとは異なります。マウス イベント データを受信する代わりに、データがイベント リスナーに渡される 2 番目のパラメーターになります。

D3v5 およびそれ以前

以前は、D3 のイベント リスナーは次のパターンに従いました。 :

selection.on("eventType", function(d, i, nodes) { .... })
ログイン後にコピー

ここで:

  • d はイベントトリガー要素のデータです
  • i はそのインデックスです
  • ノードは現在のグループです選択した要素の数

イベント関連データには、d3.event を使用してアクセスできます。

D3v6

D3v6 では、パターンが変更されましたto:

selection.on("eventType", function(event, d) { .... })
ログイン後にコピー

今度は、イベント オブジェクトが最初のパラメーターとして直接渡され、データが 2 番目のパラメーターになります。その結果、d3.event は非推奨になりました。

データムへのアクセス

マウスオーバー ターゲットのデータムを取得するには:

node.on("mouseover", (event, d) => { 
    console.log(d); 
});
ログイン後にコピー

イベント位置の決定

D3v5 では、d3.mouse(this) を使用してイベントの X、Y 位置を取得できます。 D3v6 では、次を使用します。

d3.pointer(event);
ログイン後にコピー

次の例は、マウスオーバー イベント中にデータとイベントの位置を取得する方法を示しています。

const data = [
    {
        "id": "Myriel",
        "group": 1
    }, 
    {
        "id": "Napoleon",
        "group": 1
    }
];

const nodes = svg.append("g")
    .selectAll("circle")
    .data(data)
    .join("circle")
    ...;

node.on("mouseover", (event, d) => {
    console.log(d.id); 
    console.log(d3.pointer(event));
});
ログイン後にコピー

以上がD3 v6 のマウスオーバー イベント中にノード データを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!