javascript - D3 试图将 SVG 的属性设置为 NaN,我不明白为什么

标签 javascript svg d3.js

我正在尝试制作一些基本的 d3 图表,我在这方面有一点经验。这是我正在使用的 JSON 示例(我有 100 个对象,为简洁起见,保留了大部分对象):

var data = [
            {
               "OrderID": 1,
               "ShipCountry": "USA",
               "Freight": 168.0,
               "Version": 2
           },
           {
               "OrderID": 2,
               "ShipCountry": "USA",
               "Freight": 336.0,
               "Version": 2
           },
           {
               "OrderID": 3,
               "ShipCountry": "USA",
               "Freight": 504.0,
               "Version": 2
           }]

这是我的 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,这显然会阻止它渲染。我已经切换了 Freight 和 OrderID 字段,但仍然只有 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]);

关于javascript - D3 试图将 SVG 的属性设置为 NaN,我不明白为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225200/

相关文章:

javascript - 编辑行时使用动态 colModel 的 jqGrid 问题

javascript - 在 JavaScript 中简洁构建 SVG 节点

json - 加载 JSON 文件时,请求的资源上不存在 'Access-Control-Allow-Origin' header 错误

javascript - 如何在 D3.js 中为笔画的粗细设置动画?

javascript - 将 React 升级到 0.13.2 会导致 : "Uncaught TypeError: Cannot read property ' _currentElement' of null"

javascript - 如何从 json footable 获取数组

javascript - "class"中的嵌套函数

javascript - 在 javascript 中解析 csv 文件并根据两个特定行提取字典

html - 如何使用 ID 处理 Sketch 导出的 SVG

jquery - 如何将 jQuery 事件附加到新元素?