嗨,我正在使用dc.js。
我无法理解如何获取用于构建屏幕截图中显示的工具提示的数据。
如何在事件处理程序brush.on('brushend.foo',function(){})中获取所选项目?
这是我绘制工具提示的处理程序:
var brush = this.chart.brush();
brush.on('brushend.foo', function() {
let selection = self.chart.select('.extent');
let tooltipValues = {
maxProbability: '-',
minProbability: '-',
minImpact: '-',
maxImpact: '-',
}
selection.on('mousemove', function(){
selection.on
div.transition()
.duration(200)
.style("opacity", 1);
div.html(
`
<div> Probability (percents) max: ${tooltipValues.maxProbability} <div>
<div> Probability (percents) min: ${tooltipValues.minProbability} <div>
<div> Impact max: ${tooltipValues.maxImpact} <div>
<div> Impact min ${tooltipValues.minImpact} <div>
`
)
.style("left", (event.pageX) + "px")
.style("top", (event.pageY - 28) + "px")
.style("class", "content")
})
.on("mouseout", function(d) {
div.transition()
.duration(300)
.style("opacity", 0);
});
});
答案 0 :(得分:1)
您使用d
作为函数的参数。根据您的数据显示,d
将具有不同的属性。例如d.x
和d.y
,或d.impact
和d.probability
selection.on('mousemove', function(d){
console.log('Hovering x at ' + d.x + ' and y at' + d.y);
console.log(d);
});
答案 1 :(得分:1)
我没有尝试使用图表中的点,而是使用crossfilter对象来检索数据。 (毕竟我们MVC中的模型是交叉滤波器。)
因此,您可以使用self.chart.dimension().top(Infinity)
获取当前已过滤的所有原始数据行。请注意,dimension.top与group.all的工作方式不同,因为它 3} em>观察自己的过滤器。这就是你想要的。
如果您更愿意使用缩减(分组)数据,则必须创建一个单独的维度&amp;小组只是为了观察所有过滤器。
这里要注意的重要一点是选择不是特定于画笔或图表。由于散点图已经观察到其他图表上的任何过滤器,并且您对散点图上的画笔感兴趣,因此结果与交叉过滤器实例中完全过滤的行集相同。