首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scale.linear()返回NaN

scale.linear()返回NaN
EN

Stack Overflow用户
提问于 2013-07-23 18:57:10
回答 2查看 5.5K关注 0票数 3

我使用d3.scale.linear()运行一个简单的条形图,并对这个示例的域范围进行硬编码

我可以在firebug中看到,当我的div的宽度增加时,w_bar似乎是NaN。

为什么会这样呢?

代码语言:javascript
复制
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();

这是一个小摆设:http://jsfiddle.net/NAhD9/5/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-23 19:09:21

w_bar不是一个数字,width属性需要是一个数字。因此,NaN。

如果希望width属性基于myJSON对象中的v属性进行缩放,则应该使用.attr("width",function (d) {return w_bar(d.v)})

这就是scale在d3中的工作方式,它们是一个函数,它接受一个参数(比例的domain中的某个值)并返回转换成适合您的标度的range的值。

更新的jsFiddle 这里.

票数 3
EN

Stack Overflow用户

发布于 2013-07-23 19:06:57

您需要使用一个函数来告诉d3,您希望您的数据如何与之交互,以便缩放来创建一个数组:

代码语言:javascript
复制
.attr("width", function(d){ return w_bar(d.v); })

这将从构成v数组的对象中获取所有的myJSON属性,用w_bar缩放它们,并将相应矩形的宽度设置为该值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17818760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档