gpt4 book ai didi

node.js - 如何在 Node.js 中正确使用 D3?

转载 作者:IT老高 更新时间:2023-10-28 21:55:44 26 4
gpt4 key购买 nike

我一直在尝试在 Node.js 中调用 D3。我首先尝试使用脚本标签从 D3 的网站导入 d3.v2.js,但随后阅读了这个帖子:

I want to run d3 from a Cakefile

D3 的作者建议应该'npm install d3'...我这样做了,我可以在 Node 控制台中成功调用它:

dpc@ananda:$ node
> var d3 = require("d3");
undefined
> d3.version;
'2.8.1'

但是,当尝试使用“node app.js”从 app.js 调用它时,我得到:

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Cannot read property 'BSON' of undefined
at /Users/dpc/Dropbox/sync/Business/MindfulSound/Development/nad.am/nadam/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js:45:44

我意识到在其他地方,D3 的作者已经明确指出应该需要 Canvas :

https://github.com/mbostock/d3/blob/master/examples/node-canvas/us-counties.js

作为:

var Canvas = require("canvas");

但即便如此,(即使在 app.js 的 require 语句中特别需要 index.js 而不是 d3.v2.js),我也无法在 Jade 模板中使用以下内容:

- script('/javascripts/d3.v2.js')
h1 Dashboard
section.css-table
section.two-column
section.cell
hr.grey
h2 Statistics
#mainGraph
script(type="text/javascript")
var Canvas = require("canvas");
var w = 400,
h = 400,
r = Math.min(w, h) / 2,
data = d3.range(10).map(Math.random).sort(d3.descending),
color = d3.scale.category20(),
arc = d3.svg.arc().outerRadius(r),
donut = d3.layout.pie();
var vis = d3.select("body").append("svg")
.data([data])
.attr("width", w)
.attr("height", h);
var arcs = vis.selectAll("g.arc")
.data(donut)
.enter().append("g")
.attr("class", "arc")
.attr("transform", "translate(" + r + "," + r + ")");
var paths = arcs.append("path")
.attr("fill", function(d, i) { return color(i); });
paths.transition()
.ease("bounce")
.duration(2000)
.attrTween("d", tweenPie);
paths.transition()
.ease("elastic")
.delay(function(d, i) { return 2000 + i * 50; })
.duration(750)
.attrTween("d", tweenDonut);

function tweenPie(b) {
b.innerRadius = 0;
var i = d3.interpolate({startAngle: 0, endAngle: 0}, b);
return function(t) {
return arc(i(t));
};
}

function tweenDonut(b) {
b.innerRadius = r * .6;
var i = d3.interpolate({innerRadius: 0}, b);
return function(t) {
return arc(i(t));
};

section.cell
hr.grey
h2 Achievements

最佳答案

在 Node 中使用 D3 的正确方法是使用 NPM 安装 d3,然后对其进行 require。您可以 npm install d3 或使用 package.json 文件,然后是 npm install:

{
"name": "my-awesome-package",
"version": "0.0.1",
"dependencies": {
"d3": "3"
}
}

在 node_modules 目录中有 d3 后,通过 require 加载它:

var d3 = require("d3");

就是这样。

关于您的其他问题:使用 D3 不需要 Canvas 。您链接的 Node Canvas 示例需要 Canvas ,因为它呈现到 Canvas 。 TypeError (Cannot read property 'BSON' of undefined) 似乎与您使用 mongoose/monogdb 相关,而不是 D3。

关于node.js - 如何在 Node.js 中正确使用 D3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9948350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com