Javascript d3-基于数据的最大计数创建行

Javascript d3-基于数据的最大计数创建行,javascript,d3.js,nvd3.js,Javascript,D3.js,Nvd3.js,下面是使用d3for循环创建的一系列行,其中实例的数量是手动定义的。假设我有一个包含一些n行数的外部数据。我想为这么多行创建行 使用for循环创建的行: var height = 200; var width = 1000; var count = 50, padding = 11; var svgContianer = d3.select(".spectrum") .append("svg") .a

下面是使用
d3
for循环创建的一系列行,其中实例的数量是手动定义的。假设我有一个包含一些
n
行数的外部数据。我想为这么多行创建行

使用for循环创建的行:

var height = 200;
var width = 1000;
var count = 50, padding = 11;
var svgContianer = d3.select(".spectrum")
                        .append("svg")
                        .attr("class", "g")
                        .attr("width", width)
                        .attr("height", height)

for(var i = 0; i < count; ++i) {
    var line = svgContianer.append("line")
                            .attr("x1", padding*i)
                            .attr("x2", padding*i)
                            .attr("y1", 90)
                            .attr("y2", 25)
                            .attr("stroke", "#555")
                            .attr("stroke-width", 10)

}
time,count 00:12,1 00:45,1 01:14,1 01:30,1 01:57,1 02:21,1 02:44,1 02:50,1 03:13,1 03:41,1 03:59,1 04:10,1 04:23,1 04:45,1 04:59,1 05:01,1 05:17,1 05:48,1 06:00,1 06:11,1 06:23,1 06:31,1 06:47,1 07:12,1 07:29,1 07:41,1 07:58,1 有些人帮助创建外部数据行数的行

数据:

var height = 200;
var width = 1000;
var count = 50, padding = 11;
var svgContianer = d3.select(".spectrum")
                        .append("svg")
                        .attr("class", "g")
                        .attr("width", width)
                        .attr("height", height)

for(var i = 0; i < count; ++i) {
    var line = svgContianer.append("line")
                            .attr("x1", padding*i)
                            .attr("x2", padding*i)
                            .attr("y1", 90)
                            .attr("y2", 25)
                            .attr("stroke", "#555")
                            .attr("stroke-width", 10)

}
time,count 00:12,1 00:45,1 01:14,1 01:30,1 01:57,1 02:21,1 02:44,1 02:50,1 03:13,1 03:41,1 03:59,1 04:10,1 04:23,1 04:45,1 04:59,1 05:01,1 05:17,1 05:48,1 06:00,1 06:11,1 06:23,1 06:31,1 06:47,1 07:12,1 07:29,1 07:41,1 07:58,1 时间,伯爵 00:12,1 00:45,1 01:14,1 01:30,1 01:57,1 02:21,1 02:44,1 02:50,1 03:13,1 03:41,1 03:59,1 04:10,1 04:23,1 04:45,1 04:59,1 05:01,1 05:17,1 05:48,1 06:00,1 06:11,1 06:23,1 06:31,1 06:47,1 07:12,1 07:29,1 07:41,1 07:58,1
看起来问题在于
i
未在您的代码段中定义。 您可以做的是:

.attr("x1", function(d,i){return padding*i})
与:

  • d
    是附加到一行的数据(与该行对应的
    数据
    数组的元素)
  • i
    数据
    数组中元素的索引
能否验证文件是否正在加载?尝试使用console.log(data)输出数据,因此验证数据是否通过。另一件事是将padding*i更改为函数(d,i){return padding*i;}我得到了一个错误
Uncaught TypeError:cannotread属性'length'为null
,这意味着您无法读取文件。因此,数据为空。如何使用数据中的
时间
将x轴添加到此行。我想要30分钟的间隔。看看d3教程。stackoverflow.com上有很多这样的例子。