0

我又玩了 d3.js 这个 javascript 库。我可以创建一个带有 2 个数字轴的图表,但现在我想要一个数字轴和一个带有日期的轴。不幸的是,我无法做到这一点。

首先,那是没有运行的代码:

d3.json('builds.json', 
        function(data){

            var format = d3.time.format("%Y-%m-%d");

            data.forEach(function(d) {
                d.finished_at = format.parse(d.finished_at);
              });

            var margin = {top: 40, right: 40, bottom: 40, left: 40},
            width = 960,
            height = 500;

            var x = d3.time.scale()
                .domain(d3.extent(data, function(d) { return d.finished_at; }))
               .range([0, width - margin.right - margin.left]);

            var y = d3.scale.linear()
                .domain(d3.extent(data, function(d) { return d.result; }))
                .range([height - margin.top - margin.bottom, 0]);

            var xAxis = d3.svg.axis()
                .scale(x)
                .orient("bottom");

            var yAxis = d3.svg.axis()
                .scale(y)
                .orient("left");

            var svg = d3.select("body").append("svg")
                .attr("width", width)
                .attr("height", height)
              .append("g")
                .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

            svg.selectAll("circle")
                .data(data)
              .enter().append("circle")
                .attr("cx", function(d) { return x(d.finished_at); })
                .attr("cy", function(d) { return y(d.result); })
                .attr("r", 6);

            svg.append("g") // Render the axis by calling a <g> selection.
                .attr("transform", "translate(0," + y.range()[0] + ")") //setzt x-achse an null punkt von y-achse
                .call(xAxis);

            svg.append("g")
                .call(yAxis);

        }); 

变量finished_at 看起来像这样:“finished_at”:“2011-11-20”,我试图解析它。

但输出如下:

在此处输入图像描述

有人可以帮我吗?

4

1 回答 1

2

问题可能出在您的数据上。您需要确认finished_atJSON 中的所有值格式正确。

您的代码似乎与一个小型工作 JSON 数据集完美配合:http: //bl.ocks.org/4162693

于 2012-11-28T18:33:25.047 回答