【发布时间】:2026-01-11 09:15:02
【问题描述】:
使用d3.js 通过获取包含 100 个对象的数组来绘制一系列矩形。尽管console.log(data) 显示正在检索新数据,但新数据点似乎没有附加任何矩形。
.enter().append() 使用不当?
function init() {
var width = 800,
height = 400,
margin = 50;
chart = d3.select('#chart')
.append('svg:svg')
.attr('width', width)
.attr('height', height);
}
function do_update() {
data = fetch_latest_top100();
console.log(data)
chart.selectAll('rect')
.data(data)
.enter()
.append('svg:rect')
.attr('x', function(d) { return x(d.x); })
.attr('y', function(d) { return y(d.y); })
.attr('height', function(d) { return d.value; })
.attr('width', function(d) { return 3 });
}
jsfiddle:http://jsfiddle.net/BU8cA/
【问题讨论】:
-
最好包含一个小提琴 (jsfiddle.net) 或 plunkr plnkr.co/edit/?p=catalogue,这将有助于实时查看问题
-
我不知道这是否是复制/粘贴问题,但您在 y 属性上的 y(d.y 之后缺少“)”,这可能是错误
-
@tomtomtom 复制粘贴问题,纠正错字,谢谢!
-
尝试删除 svg: 在 rect 之前,因为您已经在选择 svg,如下所示: .append("rect") 如果不是我没有看到任何其他奇怪的东西代码
-
@tomtomtom 我在帖子中包含了 jsfiddle。第二次获取的数据似乎对图表没有任何作用。
标签: javascript jquery svg d3.js