无法将JSON绑定到d3

时间:2013-08-22 16:15:42

标签: json d3.js bind

我进行了广泛的搜索,但是在我的生活中无法将JSON数据绑定到简单的散点图。我查看了帖子和示例,但我只能设法绑定数组而不是JSON。下面,我试图简单地将JSON数据显示为文本,但仍无法使其正常工作。如果你有任何想法,请告诉我!

d3_attempt.js

var data;

d3.json("json_data.json",function(error, dataset) {
    if (error) return console.warn(error);

    data = dataset;

    var myscatter = d3.select("#somediv").append("svg")
                    .attr("width", 700)
                    .attr("height", 400);

    myscatter.selectAll("text")
        .data(data.data)
        .enter()
        .append("text")
        .text(function(d){return d)})
});

json_data.json

{
    "data":
    {
        "john": {"name": "john", "age": "13"},
        "matt": {"name": "matt", "age":"14"}
    }
}

1 个答案:

答案 0 :(得分:2)

是的,您只能绑定数组,因此您可能希望将数据转换为数组:

myscatter.selectAll("text")
    .data(d3.values(data.data));

这将为您的text个节点提供{ name, age }个对象作为数据。如果您也需要密钥(在这种情况下看起来不需要),您可以使用d3.entries,它会为您提供一组对象,如{ key: "john", value: { name: "John", age: "13" }}