我有以下结构的JSON列表:
[
{'uid': 4, 'x': -1.2354657, 'y': -0.992893}
{'uid': 26, 'x': 0.2783682, 'y': -0.1931}
...
{'uid': 26, 'x': -0.278356, 'y': 0.082983}
]
我正在尝试将svg:circle
元素附加到此列表中svg
和x
值指定的点y
。 AJAX请求正常工作,但我一直收到Error: Invalid value for <circle> attribute cy="[object Object]"
。
相关的javascript代码:
var svg = d3.select('#d3')
.append('svg')
.append('g')
.attr('class', 'main')
...
var x = d3.scale.linear()
.domain(d3.extent(data, function (d) {return d.x;}))
.range([0, width]);
var y = d3.scale.linear()
.domain(d3.extent(data, function (d) {return d.y;}))
.range([height, 0]);
...
svg.selectAll('.bloom')
.data(data)
.enter()
.append('g')
.attr('class', 'bloom')
.append('circle')
.attr('class', 'bloom-circle')
.attr('cx', function (d) {return x(d.x);})
.attr('cy', function (d) {return y(d.y);})
.attr('r', 10)
.style('fill', 'purple')
.style('stroke', 'white')
.style('stroke-width', '5px');
我完全不知道发生了什么,因为d3.scale.linear
应始终在其range
中返回一个值。有人知道为什么会这样吗?
答案 0 :(得分:0)
当范围未明确指定时,比例将返回空对象。例如,以下标度在为任何值调用时都将返回{}
:
d3.scale.linear.domain([0, 1]).range([0, undefined])
d3.scale.linear.domain([0, 1]).range([0, NaN])
因此,执行时是否height
和width
定义良好?