1

我有一个新手 d3.js 问题。我尝试输入很多教程输入,但我似乎永远无法让显示输出正常工作。这是一个例子。我有一个 d3.js 页面模板示例(来自 Scott Murray 的 D3 书。)

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3 Page Template</title>
        <script type="text/javascript" src="d3/d3.v3.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            // Your beautiful D3 code will go here
        </script>
    </body>
</html>

所以现在,我去:http ://www.recursion.org/d3-for-mere-mortals/并尝试在 D3 容器中输入第一个代码示例:

var rectDemo = d3.select("#rect-demo").
  append("svg:svg").
  attr("width", 400).
  attr("height", 300);

rectDemo.append("svg:rect").
  attr("x", 100).
  attr("y", 100).
  attr("height", 100).
  attr("width", 200);

我在网上搜索了有关如何在 html 文件中构建 D3 代码的确切来源,但不幸的是,几乎所有教程都假设您知道在哪里放置相关代码行,以便在您打开您的浏览器。在过去的几周里,这个普遍的问题一直困扰着我。

当我在容器中输入上述内容时,我没有得到任何输出:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3 Page Template</title>
        <script type="text/javascript" src="d3/d3.v3.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            // Your beautiful D3 code will go here
            // http://www.recursion.org/d3-for-mere-mortals/
            var rectDemo = d3.select("#rect-demo").
              append("svg:svg").
              attr("width", 400).
              attr("height", 300);

            rectDemo.append("svg:rect").
              attr("x", 100).
              attr("y", 100).
              attr("height", 100).
              attr("width", 200);
        </script>
    </body>
</html>

有人可以简要解释一下为什么会这样,以及我必须做什么才能显示这个示例吗?非常感谢!我整天都在努力让示例显示出来,并尝试进行一些小的修改,使任何复制和粘贴的示例输出消失!

4

2 回答 2

3

问题实际上只是最初的“入口点”,即 D3 将所有内容附加到的元素。在您的 HTML 模板中,元素的主体中没有任何内容,但在 D3 代码中,您选择了 ID 为“rect-demo”的元素来附加所有内容。该元素不存在,因此没有任何反应。

因此,您有两个选择来完成这项工作——要么将具有此 ID 的元素添加到您的 HTMl 模板,要么告诉 D3 追加到body.

选项1:

<body>
<div id="rect-demo"></div>
// etc

选项 2:

var rectDemo = d3.select("body").
// etc

一般来说,使用最新版本的 D3,您不需要明确指定添加元素的命名空间(除非它不明确)。也就是说,.append("svg:rect")您可以简单地做.append("rect").

于 2013-10-20T19:44:13.480 回答
0

如果您使用的是 Chrome,则需要在本地服务器上运行该文件。如果您使用的是 Mac,则内置 Apache 服务器,或者您可以获得MAMP或Windows 的XAMPP 之类的东西。我注意到尽管 Firefox 使用file://URL 呈现 D3,但这是最快的修复;只需使用火狐。:)

于 2013-10-20T19:31:15.713 回答