D3库+ Javascript +功能

时间:2013-09-26 02:15:33

标签: javascript function d3.js

如果这是一个非常基本的问题,请提前道歉。

我正在阅读这本关于D3,互联网数据可视化Web,一个JavaScript库的书 http://chimera.labs.oreilly.com/books/1230000000345/ch06.html#_the_data

我发现它是一本好书,因为我仍然是这个东西的新手。

在下面的代码和demo here中,据我所知,我可以调用“d”任何内容,它仍会引用“数据集”数组。

无论如何我的问题在下面的例子中是如何引用数据集数组? 如果我有另一个我想引用的数组呢?

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3: A simple scatterplot with SVG</title>
        <script type="text/javascript" src="../d3/d3.v3.js"></script>
        <style type="text/css">
            /* No style rules here yet */       
        </style>
    </head>
    <body>
        <script type="text/javascript">

            //Width and height
            var w = 500;
            var h = 100;

            var dataset = [
                            [5, 20], [480, 90], [250, 50], [100, 33], [330, 95],
                            [410, 12], [475, 44], [25, 67], [85, 21], [220, 88]
                          ];

            //Create SVG element
            var svg = d3.select("body")
                        .append("svg")
                        .attr("width", w)
                        .attr("height", h);

            svg.selectAll("circle")
               .data(dataset)
               .enter()
               .append("circle")
               .attr("cx", function(d) {
                    alert(d); //d here can be anything here EG "p" --> still not sure how it relates to dataset --> what if I had another array that I wanted to reference??-->  
                    return d[0];  //return the 0th element
               })
               .attr("cy", function(d) {
                    return d[1];    //return the 1th element
               })
               .attr("r", 5);

        </script>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

那是一个很好的问题。首先,让我们看看你在该代码中做了什么。第一部分涉及选择DOM的body元素并附加svg容器,该容器位于此片段中:

var svg = d3.select("body")
                        .append("svg")
                        .attr("width", w)
                        .attr("height", h);

接下来,根据数据创建svg圈,在本例中为变量数据集。这是在这个片段中完成的:

    svg.selectAll("circle")
       .data(dataset)
       .enter()
       .append("circle")

然后,您可以在圈子中为其他代码提供一些属性。

所以你的问题是如何在data(dataset)行回答 d 引用你的数据集。这一行说,使用变量数据集并将其绑定到圆圈。因此,如果你有另一个名为Hattrick的数据集,你只需在data(dataset)中用Hattrick替换数据集。

我建议你看看Mike Bostock的这些教程Thinking with JoinsHow Selections Work以及Scott Murray的优秀书籍。如果您还没有找到它们,您可能也会对Scott的在线tutorials感兴趣。