使用D3绘制圆圈

时间:2013-08-15 09:53:29

标签: html svg d3.js dreamweaver webpage

以下代码用于绘制彼此相邻的五个圆圈

<head>
<script type='text/javascript' src='jquery-2.0.3.min.js'></script>
<script type='text/javascript' src='knockout-2.3.0.js'></script>
<script type='text/javascript' src='knockout-2.3.0.js'></script>
<script type='text/javascript' src='knockout-2.3.0.js'></script>
<script src="bootstrap.min.js"></script>

<!-- Bootstrap -->
<link href="bootstrap.min.css" rel="stylesheet" media="screen">
<link href="sticky-footer.css" rel="stylesheet">
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>

</head>

<body>
  <div id="viz"></div>

<script type="text/javascript">
    var dataset = [],
    i = 0;

    for(i=0; i<5; i++){
        dataset.push(Math.round(Math.random()*100));
    }        

    var sampleSVG = d3.select("#viz")
        .append("svg")
        .attr("width", 400)
        .attr("height", 400);    

    sampleSVG.selectAll("circle")
        .data(dataset)
        .enter().append("circle")
        .style("stroke", "gray")
        .style("fill", "black")
        .attr("height", 40)
        .attr("width", 75)
        .attr("x", 50)
        .attr("y", 20);

  </script>
 </html>

这不是我的代码,我只是从这个网站上复制了它 http://christopheviau.com/d3_tutorial/

问题是此代码不会绘制任何圆圈。 虽然当我尝试使用chrome的工具检查元素时,我发现圆圈在那里,但它们不可见。

我认为原因是圆圈的白色虽然不是中风。 但是改变颜色并不是很有用。

问题在于,Dreamweaver并没有像HTML或JavaScript那样提供帮助。

有关解决此问题的任何建议,或对编辑的任何建议?

2 个答案:

答案 0 :(得分:9)

看起来您举了一个生成矩形并将其更改为圆形但圆圈没有x,y,高度和宽度属性的示例,它们有cx, cy and radius attributes instead

sampleSVG.selectAll("circle")
    .data(dataset)
    .enter().append("circle")
    .style("stroke", "gray")
    .style("fill", "black")
    .attr("r", 40)
    .attr("cx", 50)
    .attr("cy", 20);

将多个圆圈一个在另一个上面绘制。

答案 1 :(得分:3)

@Robert Longson 感谢Robert Longson

如果你想避免圈子之间的交错 这是代码

<script type="text/javascript">
    var dataset = [],
    i = 0;

    for(i=0; i<5; i++){
        dataset.push(Math.round(Math.random()*100));
    }

    var sampleSVG = d3.select("#viz")
    .append("svg")
    .attr("width", 500)
    .attr("height", 300);    

    sampleSVG.selectAll("circle")
    .data(dataset)
    .enter().append("circle")
    .style("stroke", "gray")
    .style("fill", "white")
    .attr("r", 40)
    .attr("cx", function(d, i){return 50 + (i*80)})
    .attr("cy", 120);
</script>