2013-01-19 59 views
0

編輯:這個問題可以簡化,這裏有雲:D3:追加圈不起作用 - 必須失去了一些東西

我加入tryign一個「圈」添加到SVG。原來,添加的圓圈被添加到DOM中,但不添加到svg,並且也不適合該比例。

<svg width="400" height="400"> 
    <g class="x axis" transform="translate(0,200)" fill="none" stroke="black" stroke-width="1" font-size="10px"> 
    <g class="y axis" transform="translate(200,0)" fill="none" stroke="black" stroke-width="1" font-size="10px"> 
    <circle fill="#008000" r="10" cy="56" cx="56"> 
    <circle fill="#008000" r="10" cy="56" cx="128"> 
    <circle fill="#008000" r="10" cy="56" cx="164"> 
</svg> 
<circle fill="#ffff00" r="10" cy="344" cx="340.4"></circle> 

我試圖完成這裏可以看到:http://jsfiddle.net/eNe3U/13/

在的jsfiddle它的作品!這是我想要的!

它從索引0到數據數組2中的3個綠色圓圈開始。然後使用另一個數據集索引1到3進行更新。這是如何刪除第一個圓並將最後一個圓添加到D3中吧?)

  1. 移動+變爲紅色

  2. 加入的黃色圓圈

  3. 去除第一(綠色)的圓。完善!

現在,當我嘗試在我的visual studio項目中使用它時,添加黃色圓圈不起作用。我被困了一段時間,也許我忽略了某些事情,或者沒有完全理解D3的方式。

所以,這裏是我的代碼:http://pastecode.org/index.php/view/66925872

幾乎是一樣的,在小提琴,2層的功能分離。錯誤在哪裏?

circle.enter().append("circle") // .data(mydata2, function(d) { return d.i; }) 
     .transition().delay(1000).duration(500) 
     .attr("cx", function (d) { return xScale(d.x); }) 
     .attr("cy", function (d) { return yScale(d.y); }) 
     .attr("r", 10).attr("fill", "yellow"); 

回答

1

circle.enter()....不是指向svg circle元素的圓點嗎?不應該是svg.enter()。append(「circle」),以便將圓圈追加到svg中?

+0

好點。立即嘗試此操作。當我正在逐步執行Firebug中的代碼時,會在該行的svg.enter()。append(「circle」)處中止。這發生在「update3D」函數中,其中svg被聲明爲「var svg = d3.select(」#d3「);」。這個svg在這個頁面上已經存在。不知怎的,我懷疑這可能是個問題......!? – graph

+0

如何獲得現有的svg? – graph

+0

是的,我只是讓這個svg對象通過使它成爲全局函數來訪問這兩個函數。如果你想有更多的控制權,你可以命名空間來避免碰撞 – climboid

相關問題