2016-11-24 87 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