如何使用 D3.js 在鼠标悬停时在条形图上显示标签?

米凯拉·赞尼

我用 D3.js 绘制了一个水平条形图。每个条形都有一个标签,并且条形在鼠标悬停时会改变颜色。标签可见性最初设置为隐藏。

var bars = gw2.selectAll(".bar")
        .data(data)
        .enter()
        .append("g")
    //append rects
    bars.append("rect")
        .attr("class", "bar")
        .attr("id", function(d) { return d.country+"_bar"; })
        .attr("y", function(d) { return y2(d.country); })               
        .attr("height", y2.bandwidth())
        .style("filter", "url(#drop-shadow-h)")
        .attr("width", function(d) { return x2(d.value); });        
    //add a value label to the right of each bar
    bars.append("text")
        .attr("class", "textlbl")
        .attr("id", function(d) { return d.country+"_lbl"; })
        .attr("fill", "#404040")
        .attr("x", function(d) { return x2(d.value) - 5 })
        .attr("y", function(d){ return y2(d.country) + (y2.bandwidth()/2); })
        .attr("dy", ".35em") //vertical align middle
        .style("text-anchor", "end")
        .text(function(d){ return (d.value); });    

.textlbl {       
   font-size: 0.7rem;
   font-weight: bold;
   visibility: hidden;
}

我希望,除了鼠标悬停上单条的颜色变化外,相应的标签也会将可见性更改为“可见”。单条如下:

<g>
    <rect class="bar" id="Greece_bar" y="149" height="14" width="230" style="filter: url(&quot;#drop-shadow-h&quot;);"></rect>
    <text class="textlbl" id="Greece_lbl" fill="#404040" x="225" y="156" dy=".35em" style="text-anchor: end; visibility: hidden;">56.6</text>
</g>

我尝试了不同的解决方案,但它们不起作用。首先,使用“selectAll”,但它选择所有条形和所有标签,而不仅仅是鼠标悬停的那个:

gw2.selectAll(".bar")
    .on("mouseover", function(d){               
        d3.selectAll(".textlbl").style("visibility", "visible");
    });

然后我尝试了 'this',但我无法获得选择器 'textlbl' 并且代码返回错误“'[object SVGRectElement]+.textlbl' is not a valid selector”。

gw2.select(".bar")
    .on("mouseover", function(d){               
        d3.select(this+"+.textlbl").style("visibility", "visible");
    });

有什么建议吗?

rioV8

也许这会做。

在d3中你不能选择兄弟姐妹,先去父母

gw2.select(".bar")
    .on("mouseover", function(d){               
        d3.select(this.parentNode).select('.textlbl').style("visibility", "visible");
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在饼图中使用鼠标悬停并在 d3 js 中显示标签

在饼图中使用鼠标悬停并在 d3 v3 js 中显示标签

如何在D3中的地图上的鼠标悬停时显示多个值?

在C3js上,如何将工具提示悬停在条形图上时显示该条的数据?

如何使用按钮单击和鼠标悬停/鼠标悬停显示和隐藏节点文本?D3 / JS

D3工具提示或条形图上的鼠标悬停

使用D3 JS绘制条形图

c3.js-如何在条形图悬停时显示手形光标

将鼠标悬停在条形图上时如何注释X和Y的值

如何在D3 JS条形图中查看轴标签和值?

将鼠标悬停在d3中的图例上时,突出显示堆叠条形图中的相应图层

使用 vanilla JS 在鼠标悬停/鼠标悬停时显示隐藏按钮

如何在D3中的节点上绘制的饼图上添加鼠标悬停属性?

如何使用D3在鼠标悬停时模糊图像?

d3 在条形图上使用缩放和画笔

如何在D3.js和HTML中的鼠标悬停时增加弧度

在带有鼠标悬停事件的条形图上进行转换时,“ TypeError:d未定义”

与d3.js一起使用拖放时如何将鼠标悬停在对象上

使用d3.js的水平条形图上的错误

如何使用 c3js 显示条形图的标签?

D3如何在鼠标悬停时将圆形更改为矩形

使用D3在鼠标悬停时更改元素大小

d3 js 圆形条形图,如何传递对象而不是 .csv 文件?

使用数据值在D3 JS条形图中添加背景色

在d3 v4中如何使用“单击,鼠标悬停,鼠标按下”等

d3js遮罩以在条形图上显示点

使用新数据更新图表时,d3 条形图标签未更新

如何在d3 js中正确使用SVG中的Use标签?

如何使用d3在条形图中添加标记