D3.js scale.linear()正在返回NaN
我正在运行一个简单的条形图,使用d3.scale.linear()并对本例的域范围进行硬编码 我可以在firebug中看到,当将宽度属性应用于我的div时,w_条似乎是NaN 为什么呢D3.js scale.linear()正在返回NaN,d3.js,D3.js,我正在运行一个简单的条形图,使用d3.scale.linear()并对本例的域范围进行硬编码 我可以在firebug中看到,当将宽度属性应用于我的div时,w_条似乎是NaN 为什么呢 var w_bar = d3.scale.linear() .domain([0, 107525233]) //harcoded .range(["0px", "290px"]); var theList = d3.select("#list").selectAll("div") .da
var w_bar = d3.scale.linear()
.domain([0, 107525233]) //harcoded
.range(["0px", "290px"]);
var theList = d3.select("#list").selectAll("div")
.data(myJSON);
theList.enter().append("div")
.text(function (d) { return d.v; })
.transition()
.duration(1000)
.attr("width", w_bar); // Why NaN?
theList.exit()
.remove();
以下是JSFIDLE:
您需要使用一个函数来告诉d3您希望如何与数据交互以缩放以创建阵列:
.attr("width", function(d){ return w_bar(d.v); })
这将从构成
myJSON
数组的对象中获取所有v
属性,用w_bar
缩放它们,并将它们对应的矩形的宽度设置为该值 嗯,w\u bar
不是一个数字,width
属性需要是一个数字。因此,楠
如果希望根据myJSON
对象中的v
属性来缩放width
属性,您应该说
.attr(“宽度”,函数(d){返回w_条(d.v)})
这就是标尺在d3
中的工作方式,它们是一个函数,它接受一个参数(标尺的域中的某个值)并返回转换后的值,以适应标尺的范围
更新的JSFIDLE