D3.js d3高度函数返回NaN
我是d3.js新手,在尝试运行以下代码时收到一个错误:error:attribute height:Expected length,NaN: 我知道错误正在发生D3.js d3高度函数返回NaN,d3.js,D3.js,我是d3.js新手,在尝试运行以下代码时收到一个错误:error:attribute height:Expected length,NaN: 我知道错误正在发生 .attr('height', function(d){ return (d * 5); }) 但我似乎无法解决它。感谢您的帮助 var data = []; for(let i = 0; i < 20; i++){ // let num = Math.floor( Math.random
.attr('height', function(d){
return (d * 5);
})
但我似乎无法解决它。感谢您的帮助
var data = [];
for(let i = 0; i < 20; i++){
// let num = Math.floor( Math.random() * 50 );
let num = d3.randomUniform(1, 50);
data.push(num);
}
// create svg element
var chartWidth = 800;
var chartHeight = 400;
var barPadding = 5;
var svg = d3.select('#chart')
.append('svg')
.attr('width', chartWidth)
.attr('height', chartHeight);
// bind data and create bars
svg.selectAll('rect')
.data(data)
.enter()
.append('rect')
.attr('x', function(d, i){
return i * (chartWidth / data.length);
})
.attr('y', 0)
.attr('width', (chartWidth / data.length - barPadding))
.attr('height', function(d){
return (d * 5);
})
.attr('fill', '#7ED26D');
如果我们查看d3.randomUniform的文档,我们会看到它返回一个函数,用于生成均匀分布的随机数。如果我们在高度函数中记录d,我们会看到d是一个函数。这是因为我们正在获取d3.randomUniform返回的函数,并将其添加到for循环中的数组中 因此,我们只需要执行该函数:
let num = d3.randomUniform(1, 50)();
但是有一个更好的方法,因为我们不需要在循环的每次迭代中创建这个函数。相反,我们可以使用:
let num = d3.randomUniform(1, 50);
for(let i = 0; i < 20; i++){
data.push(num());
}
var数据=[];
设num=d3.1或m1,50;
forlet i=0;i<20;我++{
data.pushnum;
}
//创建svg元素
var-chartWidth=800;
var chartHeight=400;
var=5;
var svg=d3。选择“图表”
.append'svg'
.attr'width',chartWidth
.attr'height',chartHeight;
//绑定数据并创建条
svg.selectAll'rect'
.数据
进来
.append'rect'
.attr'x',函数d,i{
返回i*chartWidth/data.length;
}
.attr'y',0
.attr'width',chartWidth/data.length-条形填充
.attr'height',函数d{
返回d*5;
}
.attr'fill'、'7ED26D';
如果我们查看d3.randomUniform的文档,我们会看到它返回一个函数,用于生成均匀分布的随机数。如果我们在高度函数中记录d,我们会看到d是一个函数。这是因为我们正在获取d3.randomUniform返回的函数,并将其添加到for循环中的数组中 因此,我们只需要执行该函数:
let num = d3.randomUniform(1, 50)();
但是有一个更好的方法,因为我们不需要在循环的每次迭代中创建这个函数。相反,我们可以使用:
let num = d3.randomUniform(1, 50);
for(let i = 0; i < 20; i++){
data.push(num());
}
var数据=[];
设num=d3.1或m1,50;
forlet i=0;i<20;我++{
data.pushnum;
}
//创建svg元素
var-chartWidth=800;
var chartHeight=400;
var=5;
var svg=d3。选择“图表”
.append'svg'
.attr'width',chartWidth
.attr'height',chartHeight;
//绑定数据并创建条
svg.selectAll'rect'
.数据
进来
.append'rect'
.attr'x',函数d,i{
返回i*chartWidth/data.length;
}
.attr'y',0
.attr'width',chartWidth/data.length-条形填充
.attr'height',函数d{
返回d*5;
}
.attr'fill'、'7ED26D';
哇,不知道我怎么错过了。非常感谢。哇,不知道我怎么错过了。非常感谢。