Javascript d3线性刻度-无效值

Javascript d3线性刻度-无效值,javascript,d3.js,scale,Javascript,D3.js,Scale,我是d3的新手(今天早上第一次开放)。我试图从csv数据文档中创建一个线性比例。 首先,我要计算比例: var x = d3.scale.linear() .range([0, width]); 然后我试着用它: .attr("width", function(d) { return x(Math.abs(Math.round(d.Betrag))); }) 但是,它返回一个错误“width=“NaN”的无效值 这一个有效(基本上没有线性缩放: .attr("width", func

我是d3的新手(今天早上第一次开放)。我试图从csv数据文档中创建一个线性比例。 首先,我要计算比例:

var x = d3.scale.linear()
  .range([0, width]);
然后我试着用它:

.attr("width", function(d) { return x(Math.abs(Math.round(d.Betrag))); })
但是,它返回一个错误“width=“NaN”的无效值 这一个有效(基本上没有线性缩放:

  .attr("width", function(d) { return Math.abs(Math.round(d.Betrag)); })

有人能帮忙吗?谢谢,传递给range的width变量可能不是数字。否则,我想不出得到NaN作为scale函数返回的其他原因。

传递给range的width变量可能不是数字。否则,我想不出得到NaN作为scale函数返回的其他原因.

上面一条评论中@Mark给出的答案是正确的

var x = d3.scale.linear()
  .domain(d3.extent(data, function(d){return d.Betrag;}))
  .range([0, width]);

或者至少几乎是在做它应该做的事情……我现在注意到一些奇怪的事情,

上面一条评论中@Mark给出的答案是正确的

var x = d3.scale.linear()
  .domain(d3.extent(data, function(d){return d.Betrag;}))
  .range([0, width]);

或者至少几乎做了它应该做的事情…我现在注意到一些奇怪的事情发生了

你是否为你的
x
量表设置了
.domain
域?d.Betrag的值是多少?请仔细阅读域。我如何使用它来根据数据改变数字?domain(data)d.Betrag持有浮点数,
是用户空间坐标的限制。这和
范围
将用户空间映射到像素空间。它通常设置为
.domain([minOfData,maxOfData])
,或者在您的情况下设置为
域(d3.extent(dataArray,function(d){return d.Betrag;}))
。尽管如此,
[0,1]的默认
,应该仍然适用于您。您需要在您的代码中添加一个可复制的示例,以便我进一步调查。您是否为您的
x
量表设置了
.domain
域?d.Betrag可以容纳哪些值?请阅读域。我如何根据数据使用不断变化的数字?域(数据)d.Betrag持有浮点数,
是用户空间坐标的限制。这和
范围
将用户空间映射到像素空间。它通常设置为
.domain([minOfData,maxOfData])
,或者在您的情况下设置为
域(d3.extent(dataArray,function(d){return d.Betrag;}))
。尽管如此,
[0,1]
的默认
域应该仍然适用于您。您需要在代码中添加一个可复制的示例,以便我进一步研究。