D3:追加圈子不起作用 - 必须遗漏某些东西

时间:2013-01-19 18:13:53

标签: javascript d3.js

编辑:这个问题可以简化,在这里:

我正在添加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. 删除第一个(绿色)圆圈。完美!

  4. 现在,当我尝试在我的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 个答案:

答案 0 :(得分:1)

circle.enter()....不圈指向svg圈元素?不应该是svg.enter()。append(“circle”),以便将圆圈附加到svg?