0
我使用d3比较堆栈布局中的2个数据集。除了当我将鼠标悬停在特定列上时,所有内容都看起来不错,我希望所有其他列都可以淡入.2不透明度。在这一点上,我可以让所有的列淡出,但是我无法保持特定的列,我的鼠标悬停在实体上。下面就来改变mousover &鼠标移出酒吧代码:在鼠标悬停的堆栈图上淡化酒吧
var rects = groups.selectAll("rect")
// Rect initialization code here....
.on("mouseover", function(d) {
// make all bars opaque
fade(.2);
})
.on("mouseout", function() {
fade(1);
});
和这里的淡入淡出功能:
function fade(opacity) {
d3.selectAll("rect")
.transition()
.style("opacity", opacity);
};
所以基本上我需要一个过滤功能来选择一切,但RECT我的鼠标是突出。 D3确实有一个,但我对如何针对我的情况实现这一点感到困惑。任何帮助?
更新
我稍微更新拉斯Kotthoff的回答,得到了这个工作。由于这是一个堆栈图,我还想在同一行中选择两个小节。这里是我的代码,对任何将来的用户:
function fade(opacity, selectedBar) {
d3.selectAll("rect")
.filter(function(d, i) { return selectedBar !== d && selectedBar.x !== d.x; })
.transition()
.style("opacity", opacity);
};
然后在主第一节刚过透明度级别和所选元素的淡入淡出功能:
.on("mouseover", function(d) {
fade(.4, d);
};
这似乎是它应该工作,但是当我尝试它ð== d返回每一个元素假... – lt445f 2014-09-25 18:17:49
对不起,忘了声明作为参数 - - 答案已更新。 – 2014-09-25 19:20:08
太棒了。谢谢您的帮助! – lt445f 2014-09-25 20:29:01