将json中的数据合并到一个新的数组中,并使用d3.js绘制形状

consolidating data from a json in a new array and drawing shapes with it using d3.js

本文关键字:d3 绘制 数组 js 一个 合并 数据 json      更新时间:2023-09-26

我正在用这个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/

我到底哪里出了问题?

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

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