2016-11-24 74 views
1

enter image description hereDC.JS散点图选择

嗨,我使用dc.js.

我不明白我怎么能得到的数据建立的截图所示的提示。

我如何在事件处理程序brush.on所选的项目( 'brushend.foo',函数(){})?

这是我的处理程序绘制工具提示:

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); 
     }); 
    }); 

回答

1

而不是试图用点的图表中,我会用crossfilter对象检索数据。 (在我们的MVC模型是crossfilter,毕竟。)

所以,你可以使用self.chart.dimension().top(Infinity)拿到这是目前在过滤的数据的所有原始行。需要注意的是dimension.top作品不同于group.all,它观察它自己的过滤器。这就是你想要的。

如果您希望使用缩减(分组)数据,则必须创建一个单独的维度组&组,以观察所有过滤器。

这里要注意的重要一点是,选择不是特别的刷子或图表。由于散点图已经观察到其他图表上的任何过滤器,并且您对散点图上的画笔感兴趣,所以结果与交叉过滤器实例中经过完全过滤的一组行相同。

1

您使用d作为参数传递给funcion。根据您的数据看起来像d将具有不同的属性。例如d.xd.y,或d.impactd.probability

selection.on('mousemove', function(d){ 
    console.log('Hovering x at ' + d.x + ' and y at' + d.y); 
    console.log(d); 
}); 
+0

我选中此选项。 我看到d == 0 ,如果你看一下函数的参数 - 将有[0,0,0] –

+0

大概是因为选择是刷,不是选择的数据点。 – Gordon