2016-03-01 80 views
0

我有一個簡單的多線圖,每個數據點上都有圓圈。我編寫了禁用一條或多條可更新Y軸的行的功能。例如,如果我刪除Y軸上具有最高值的線,則會重新繪製Y軸以更新比例。發生這種情況時,這些線條也會更新爲新的比例,但我無法讓這些圓圈用線條更新它們的位置。d3在y軸上移動圓圈更新

這裏有相關位:

var y = d3.scale.linear().range([height, 0]); 
var yAxis = d3.svg.axis() 
     .scale(y) 
     .orient("left"); 
y.domain(d3.extent(data, function(d) { return d.pfcLevel; })); 

這裏是更新Y軸(作品)的函數:

function rescaleY() { 
    y.domain([0, getMaxY()]); 
    svg.select(".y").transition() 
     .duration(1000).ease("sin-in-out") 
     .call(yAxis); 
} 

這裏是更新線(作品)的函數:

function updateLines() { 
    svg.selectAll(".line") 
     .transition().duration(500) 
     .delay(function(d, i) { return i * 20; }) 
     .attr("d", function(d) { 
      return line(d.values); 
     }); 
} 

這裏是更新圓圈位置(不工作)的功能:

function updateCircles() { 
    svg.selectAll(".circle") 
     .transition().duration(500) 
     .delay(function(d, i) { return i * 10; }) 
     .attr("cy", function(d, i) { return y(d.pfcLevel) }); 
} 
+0

沒有看到你包含的代碼。也許你忘了將這些圈子分配給一個「圈子」班?當你運行'svg.selectAll(「。circle」)。size()'?時你會得到一個非零的數字嗎? – meetamit

+0

如果可以,設置一個小提琴,我們可以看看? – thatOneGuy

+0

這是一個小提琴:https://jsfiddle.net/goodspeedj/5ewLxpre/3/ 點擊右手圖例中的矩形將啓用/禁用線條。 – JamesE

回答

1

您的circle類元素爲g元素,它們沒有cy屬性。選擇器應該是:

svg.selectAll(".circle circle") 
    .transition().duration(500) 
    ... 
+0

這樣做 - 這麼簡單...謝謝。 – JamesE