合并来自新数组中json的数据,并使用d3.js用它绘制形状

时间:2013-08-25 18:55:45

标签: javascript d3.js

我正在从这个json

创建一个新数组
http://data.cityofnewyork.us/resource/a7hj-s5px.json

我存储邮政编码以及邮政编码在数据集中显示的次数。

它有其他信息,例如什么类型的噪音,以及稍后我将处理的。

这是我在做的事情: 通过执行此操作检查我们在数据集中有多少个唯一邮政编码

var zipValue = [];
var zipFrequency = [];

var map = d3.map();
    data.forEach(function (d) {
        var zipCount = map.get(d.incident_zip);
        map.set(d.incident_zip, zipCount === undefined ? 1 : ++zipCount);
    });

    //storing the mapped values in an array
    zipValue = map.keys(map);
    zipFrequency = map.values(map);


var hScale = d3.scale.linear()
        .domain([0, d3.max(newArray, function(d) { return d[1]; })])
        .range([7, 70]);

最后尝试将hScale作为参数传递给形状。

这是我的小提琴 http://jsfiddle.net/sghoush1/rYXbG/15/

我到底哪里错了?

1 个答案:

答案 0 :(得分:0)

你看过控制台了吗?我检查了你的小提琴,你有一个错误:

Uncaught TypeError: Object [object Array] has no method 'hScale'

并且,它似乎是由以下原因引起的:

svg.selectAll("rect")
    .data(newArray)
    .enter()
    .append("rect")
    .attr("x", (k++) + 2)
    .attr("y", 125)
    .attr("width", 2)
    .attr("height", function (d, i) {return d.hScale(d[1]);});

最后一行应该是return hscale(d[1]);而不是d.hscale