0

这让我有点烦。我正在制作一个带有回调的 d3.get.json,以从 api 检索一些数据。效果很好。然后我将键值存储在一个变量中,我试图将其作为参数传递给一个圆圈。那是行不通的。圆圈不会被绘制。似乎无法弄清楚我做错了什么

这就是我所拥有的

d3.json("http://data.cityofnewyork.us/resource/xm9j-adfx.json", function(data) {

    var energy = JSON.parse(data[0].consumption_gj_)/1000; // I probably will figure out a better math function for this
    //alert(energy)
    var x_axis = 10;
    var y_axis = 10;

    var svgContainer = d3.select("#chart").append("svg")
    .attr("width", 300)
    .attr("height", 300)
    .style("background", "black");

    var circles = svgContainer.selectAll("circle")
                  .data(json)
                  .enter()
                  .append("circle");

        var circleAttributes = circles
        .attr("cx", function(d){return d.x_axis;} )
        .attr("cx", function(d){return d.y_axis;} )
        .attr("r", function(d){return d.energy;} )
        .style("fill", "red");

});

基本上,这个想法是用半径绘制圆作为能量变量的函数

这是我的小提琴

http://jsfiddle.net/sghoush1/KcWCr/5/

4

2 回答 2

0

好的,对于任何可能想知道如何解决这个问题的人来说……我只是自己想出来的……这是小提琴……(拍拍我的背)

http://jsfiddle.net/sghoush1/KcWCr/6/

这个想法是,一旦我使用 d3.json 的回调将数据存储在变量中,我就可以轻松地将其用作任何属性或样式的参数来生成形状。这是我的做法

d3.json("the external .json ", function(data) {

    var blablbla = JSON.parse(whatever key value I want to parse);
    //alert(energy)
    var x_axis = 10;
    var y_axis = 10;

    var svgContainer = d3.select("#chart").append("svg")
    .attr("width", 300)
    .attr("height", 300)
    .style("background", "black");

    var circles = svgContainer.selectAll("circle")
                  .data(data)
                  .enter()
                  .append("circle");

    var circleAttributes = circles
            .attr("cx", "50" )
            .attr("cy", "50" )
            .attr("r", function(d){return blablbla;} )
            .style("fill", "red");

});

和宾果游戏!!

于 2013-06-29T18:44:54.807 回答
0

你需要打电话.data(data)而不是打电话.data(json),你会画出圆圈。

您仍然需要以这种方式分配圆圈属性:

.attr("cx", function(d){return d.x_axis;} )

于 2013-06-29T07:46:59.390 回答