一个变量在一个位置被设置为Nan,但在另一个位置被正确设置为Nan
a variable is being set as Nan at one place, but correctly at another location
在下面的代码中,我试图读取包含名称和值对的tsv文件,使用d3.js绘制条形图。
在执行下面的代码之前,我已经设置了y = d3.scale.linear.range()。
为什么当我设置时,rect.attr('y',height - barHeight);
y被设置为NaN,而这里var rect = bar.append('rect')
.attr('width', barWidth-1)
.attr('height', barHeight);
矩形高度被正确设置?
在此函数之前我已经设置了高度和宽度值。它们不是未定义的
问题是计算height - barHeight
,如果我只是给它作为.attr('y',barHeight);
,它是设置矩形的y属性。
var svg = d3.select('svg');
var width = 960;
var height = 500;
svg.attr('height', height)
.attr('width', width);
var y = d3.scale.linear()
.range([0,500]);
d3.tsv("./src/src.tsv", typeCast,
function (error, array)
{
y.domain([0, d3.max(array, function (d){
return d.value;
})]);
var barWidth = width / array.length;
var barHeight = function (d)
{
console.log(y(d.value));
return y(d.value);
}
var bar = svg.selectAll('g')
.data(array)
.enter()
.append('g')
.attr('transform', function (d, i){
return "translate("+i * barWidth+")";
});
var rect = bar.append('rect')
.attr('width', barWidth-1)
.attr('height', barHeight);
rect.attr('y', height - barHeight);
}
);
请帮我设置矩形的y属性
这是因为您的barHeight
是一个函数。
var barHeight = function (d)
当像.attr('height', barHeight)
一样使用它时,它会给出正确的值,因为.attr()
接受一个函数作为第二个参数,该函数将被执行并返回值。
第二种用法应该是
rect.attr('y', function(d) { return height - barHeight(d); });
高度变量没有定义,所以height - barHeight
是undefined - Number
,也就是NaN
。正确设置变量height
相关文章:
- ThreeJS:实例化对象会将其位置设置为零
- 在绝对位置设置从 A 到 B 的选择范围
- JavaScript:将插入符号位置设置为第一段的开头(Opera bug)
- 根据页面上的位置设置随机类
- 将位置设置为其他对象的位置在 THREE.js 中不起作用
- 如何将当前GPS导航器位置设置为destinationA的变量,以查找距离和时间
- 从当前鼠标位置设置内容可编辑插入符号位置
- 如何将光标在文本区域中的位置设置回顶部
- 如何在同一位置设置多个控件
- 将水平滚动条位置设置为最右侧
- 如何为bing地图上的单个位置设置缩放级别
- 根据客户端位置设置日期时间
- 没有滚动条出现,当我通过浏览器运行我的网站,我的滑出菜单位置设置为固定
- 如何在同一位置设置可扩展图标
- 将位置设置为绝对位置后,元素位置发生变化
- 地理位置设置变量为当前位置
- 在chrome中的contenteditable元素的节点内,将插入符号位置设置为零
- 如何将相机的位置设置为三.js而不旋转
- 如何在谷歌地图的中心位置设置标记
- 在选择框的特定位置设置滚动条