2015-12-21 26 views
0

到目前爲止,我導入的唯一庫是d3,並且檢查了d3.js文件以確保函數在那裏。它是。.delay()不是d3中的函數

我正在試圖從D3和AngularJS書的數據可視化中做例子。下面的代碼[直接從書中,去掉註釋】題:

<svg width="800" height="500"></svg> 
<script type="text/javascript"> 
var data = []; 
setInterval(function(){ 
    if (data.length < 8) { 
     data.push(Math.random()); 
    } 
    else { 
     data = []; 
    } 
    draw(); 
}, 1000); 

function draw() { 
    var svg = d3.select('svg'); 

    var circles = svg.selectAll('circle').data(data); 

    circles 
    .attr('fill', 'orange'); 

    circles.enter() 
    .append('circle') 
    .attr('fill', 'red') 
    .attr('r', 40) 
    .attr('cx', function(d, i) { return i*100 + 50; }) 
    .attr('cy', 50); 

    circles 
    .style('stroke', 'black'); 

    circles.exit() 
    .delay() 
    .remove(); 
} 

我特別遇到的問題是在

circles 
.exit() 
.delay() 
.remove(); 

它說,延遲功能「是不是功能「,即使它是。我嘗試將書中的代碼完全移植到一個全新的項目中,但它不起作用。 (如果這有所幫助,我正在使用chrome瀏覽器)。

感謝

+0

退出函數返回的東西,你可以調用延遲? –

+0

感謝您的回答!是的,它返回一個數組。當數組長度爲8時,該數組成爲一個圓對象數組,但在此之前,控制檯記錄的唯一有意義的信息是數組的長度 – LargeCrimsonFish

+2

@ johnny5不,不。 '.exit()'返回一個d3 [選擇](https://github.com/mbostock/d3/wiki/Selections),但'.delay()'是d3 [transitions]的一個函數(https:// github.com/mbostock/d3/wiki/Transitions#delay) – Paulpro

回答

3

delay()不是selections功能。但是,您可以撥打delay()進行轉換。所以:

circles 
    .exit() 
    .transition() 
    .delay() 
    .remove(); 
+0

感謝您的回答!不幸的是,它給出了自己的公平份額的錯誤,但我瞭解到,延遲只能被稱爲d3轉換,而不是d3選擇。 – LargeCrimsonFish

相關問題