Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3试图将SVG的属性设置为NaN,我可以';我不明白为什么_Javascript_Svg_D3.js - Fatal编程技术网

Javascript D3试图将SVG的属性设置为NaN,我可以';我不明白为什么

Javascript D3试图将SVG的属性设置为NaN,我可以';我不明白为什么,javascript,svg,d3.js,Javascript,Svg,D3.js,我正在尝试制作一些基本的d3图表,我有一点经验。下面是我正在使用的JSON的一个示例(我有100个对象,为了简洁起见,大多数对象都被省略了): 这是我的d3代码: var margin = { top: 10, bottom: 30, left: 30, right: 20 }; var width = 700 - margin.left - margin.right; var height = 400 - margin.top - margin.bottom; //svg for char

我正在尝试制作一些基本的d3图表,我有一点经验。下面是我正在使用的JSON的一个示例(我有100个对象,为了简洁起见,大多数对象都被省略了):

这是我的d3代码:

 var margin = { top: 10, bottom: 30, left: 30, right: 20 };

var width = 700 - margin.left - margin.right;
var height = 400 - margin.top - margin.bottom;
//svg for chart with margins
var svg = d3.select('#chart-wrapper')
                .append('svg')
                    .attr('height', height + margin.top + margin.bottom)
                    .attr('width', width + margin.left + margin.right)
                .append('g')
                    .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');

//xScale will be based on orderID attribute
var xScale = d3.scale.linear().domain([0, 99]).range([0, width]);
var yScale = d3.scale.linear().domain([16632, 0]).range(height, 0);




svg.selectAll('circle')
    .data(data)
    .enter()
    .append('circle')
        .attr('cx', function (d) {
            return xScale(d.Freight)
        })
        .attr('cy', function (d) {
            return yScale(d.OrderID);
        })
        .attr('r', 2)
        .attr('fill', 'green');
出于某种原因,每个圆的cy属性被设置为NaN-这显然阻止了它的渲染。我已经切换了运费和订单ID字段,但仍然只有cy属性没有正确设置。在调试时,我记录了每个的值,它们看起来是实数。(这也是在尝试创建线图时发生的-路径的'd'属性的第二个数字是NaN,这是我决定尝试散点图的时候)


知道发生了什么吗?谢谢

您需要为
.range()
数组设置参数

var yScale = d3.scale.linear().domain([16632, 0]).range(height, 0);
现在是

var yScale = d3.scale.linear().domain([16632, 0]).range([height, 0]);

如果您打开svg,请选择All()并在控制台中使用显示的数字调用
yScale()
?另外,您在
return xScale(d.Freight)
后面缺少一个分号,它的计算结果为NaN-那么,这似乎是比例的问题?似乎是。
.range(height,0)
参数是否需要是一个
数组
.range([height,0])
使用yScale函数,使其仅为d.Freight的值…在控制台中不会抛出任何错误,但也不会渲染任何内容
console.log(yScale(d.Freight))打印为?谢谢,我会投票给你,但我的代表还不够。抱歉浪费了你的时间哈哈,我盯着它看了很久没问题。发生在我们最好的人身上。
var yScale = d3.scale.linear().domain([16632, 0]).range([height, 0]);