如何在D3中的图表标签上触发onmouseover事件

2024-04-12

我用 D3 制作了以下图表:

当将鼠标悬停在图表上时,中间的空间会显示信息。

我有以下代码来处理该事件:

var path=svg.selectAll('path')
    .data(pie(get(this, 'data')))
    .enter()
    .append('path')
    .attr({
        d:arc,
        fill:function(d,i){
            return color(d.data.name);
        }
    })
    .on("mouseover", function(d, i) {
        self.setTooltip(d.data.icon, d.data.name, d.data.value);
    })
    .on("mouseout", function(d, i) {
        self.clearTooltip();
    });

我还使用以下代码在图表上生成 Font Awesome 图标:

var text=svg.selectAll('text.value-label')
        .data(pie(get(this, 'data')))
        .enter()
        .append("text")
        .transition()
        .duration(200)
        .attr("transform", function (d) {
            return "translate(" + arc.centroid(d) + ")";
        })
        .attr("dy", ".5em")
        .attr("text-anchor", "middle")
        .attr('class', 'value-label')
        .text(function(d){
            return d.data.icon;
        })
        .style({
            fill:'#fff',
            'font-size':'1.5em',
            'font-family': 'FontAwesome'

        })
        /* This isn't working
        .on("mouseover", function(d, i) {
            self.setTooltip(d.data.icon, d.data.name, d.data.value);
        })
        .on("mouseout", function(d, i) {
            self.clearTooltip();
        });
        */

目前,中间的“工具提示”/信息仅在鼠标指针位于图表的彩色部分上方时显示。如果指针位于文本 (FontAwesome) 标签上方,工具提示将保持隐藏状态。

当鼠标指针位于图表块边界内的任何位置(包括文本标签)时,如何使工具提示显示?


您不需要在文本元素中再次触发鼠标悬停事件。刚刚设置pointer-events to none在你的文本变量中:

var text = svg.selectAll('text.value-label')
    .data(pie(get(this, 'data')))
    .enter()
    .append("text")
    .attr("pointer-events", "none")
    //etc...

这样,它们后面的路径将处理鼠标悬停事件,就像没有文本一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在D3中的图表标签上触发onmouseover事件 的相关文章

随机推荐

  • 如何在启用视觉样式的情况下将控件渲染为看起来像 ComboBox?

    我有一个模仿的控件ComboBox 我想渲染该控件以便该控件border看起来像标准的Windows 组合框 具体来说 我遵循了 MSDN 文档 除了禁用控件时的渲染之外 所有控件的渲染都是正确的 需要明确的是 这是针对具有视觉风格已启用
  • ASP .NET 单例

    只是想确保我在这里没有假设一些愚蠢的事情 在 ASP Net Web 应用程序中实现单例模式时 静态变量范围仅适用于当前用户会话 对吧 如果第二个用户正在访问该站点 那么它是不同的内存范围 静态成员仅具有当前工作进程的作用域 因此与用户无关
  • 为什么 LINQPad 将枚举整数值转储为字符串?

    我使用 LinqPad 来测试一些 Enum 函数 但在使用 Dump 时没有得到像我预期的整数 为什么 ToList 解决了这个问题 void Main Enum GetValues typeof Options Cast
  • Gas 与 nasm:哪个汇编器生成最好的代码?

    这两种工具都将汇编指令直接翻译成机器代码 但是是否有可能确定哪一个生成最快 最干净的代码 当你用汇编程序编写时 您正在准确地描述生成的指令所以它不依赖于汇编器 这取决于你 您编写的助记符与机器代码中的实际指令之间存在一一对应的关系
  • 原始(二进制)数据太大而无法写入磁盘。如何按块写入磁盘(附加)?

    我在 R 中有一个很大的原始向量 即二进制数据数组 我想将其写入磁盘 但我收到一条错误消息 告诉我该向量太大 这是一个可重现的示例和我收到的错误 gt writeBin raw 1024 1024 1024 2 test bin Error
  • jqgrid按文本问题对列进行排序

    我在我的网站中使用了 jqgrid 但遇到了一个问题 我做了什么 name type index type width 40 editable true edittype select sorttype text editoptions v
  • SASS 将特定属性从父级扩展/共享/继承到子级,反之亦然

    是否可以将所选 特定属性从父级扩展到 共享给子级 例如不创建变量 main container padding 20px margin 20px ul padding parentPadding margin 0 或相反亦然 就你而言 ma
  • 在 Fortran 中读取行数已知但每行条目数未知的数据文件

    如何读取包含已知行数但每行中的条目数未知的数据文件 例如如果我的数据文件包含类似的内容 1 3 4 5 6 7 8 9 1 3 5 6 4 5 6 7 8 3 5 6 7 8 4 5 7 8 即三行 但每行中的数据未知 有一次我需要来自一行
  • 引导断点...需要一些说明“xs sm md lg”

    所以 在网上查找 我看到一些最近的文章指出xs断点是480px及以下 其他 声明767及以下 我的理解 可能不正确 xs 适用于手机 480 像素及以下 col sm 适用于平板电脑 480 像素至 767 像素 等 然而 当我应用 hid
  • PHP:获取 HTTP 协议版本(HTTP/1.1 与 HTTP/2)

    到目前为止 我的 php 应用程序到处都采用 HTTP 1 1 所以我定义了所有标题 如下所示 header HTTP 1 1 500 Internal Server Error 但现在我的服务器也支持 HTTP 2 我想使用正确的 HTT
  • 类方法和实例方法同名

    我想做这样的事情 class X classmethod def id cls return cls name def id self return self class name 现在打电话id 对于类或其实例 gt gt gt X id
  • 如何在 Tensorflow 中设置损失操作的名称?

    在 Tensorflow 中 我可以为操作和张量指定名称 以便稍后检索它们 例如在一个函数中我可以做 input layer tf placeholder tf float32 shape None 300 name input layer
  • “FOR”在cmd批处理文件中如何工作?

    20 年来我一直在使用数十种语言进行编程 但无论我如何努力 我始终无法理解 Windows cmd shell 批处理文件中的 FOR 是如何工作的 我读 http www ss64 com nt for html http www ss6
  • 在Access表中插入自增主键

    我们在 Access 数据库中有一个巨大的表 有超过 500k 条记录 并且没有 PK 是否可以将自动递增主键列插入到已经存在的 Access 表中 是的 它是并且可以通过编辑表并添加自动增量类型字段来非常简单地完成 唯一的规则是每个表只能
  • D3 中的堆叠变换

    我有一个已应用变换的 SVG 元素 这可以是单个变换 也可以是多个变换的组合 我正在尝试对其应用额外的变换 问题是这个变换可以重复应用 并且需要与现有的变换状态堆叠 因此在末尾附加额外的变换是不切实际的 浏览 d3 API 我没有注意到任何
  • 查找每第三个值并在 VIM 中插入 cr 或换行符

    因此 我有几个大型数据集 需要使其更具可读性 目前我必须进入并移动到每个第三个值并插入换行符 我已经在 VIM 中尝试了几种方法来使其正常工作 但似乎没有一个能返回我正在寻找的值 这是我的一些数据 0 96260310749184663 4
  • 如何改进多次 StringReplace 调用?

    我从客户那里读取文件 我需要处理读取的数据并删除一些不需要的字符 我的函数有效 但我正在尝试改进 FixData 函数以提高速度 性能和可维护性 是否可以将多个 StringReplace 调用替换为仅循环一次数据并替换为所需的任何内容的调
  • 有没有办法将多个 TraCI 模块连接到 OMNet++/veins 模拟?

    要启动任何静脉模拟 需要使用 Veins launchd 守护进程 它基本上采用 sumo 配置文件 找到未使用的端口 启动 sumo 并桥接 sumo 和 OMNet 之间的连接 现在 由于这是基于套接字的通信 我想连接一个单独的 Tra
  • 在 Pycharm 中以 DEBUG 模式跳过 Django 服务器上的系统检查

    我正在 Pycharm 中以调试模式运行 django 应用程序 每次我更改代码时都会执行一些系统检查 pydev debugger process 2354 is connecting Performing system checks 有
  • 如何在D3中的图表标签上触发onmouseover事件

    我用 D3 制作了以下图表 当将鼠标悬停在图表上时 中间的空间会显示信息 我有以下代码来处理该事件 var path svg selectAll path data pie get this data enter append path a