简单的D3线图没有加载数据

时间:2013-05-20 20:02:37

标签: javascript d3.js linechart

我一直在尝试在D3中创建一个非常简单的线图。数据是从单个数组中检索出来的,没什么特别的,但是,无论我怎么努力,数据都不会加载到图表中。我已经修改了很多次代码,似乎没有解决方案。请记住,我是新手JS和D3用户。

<script>

var h = 400;
var w = 600;
var margin = 20;
var datac = [68, 1887, 1531, 645, 3870, 2759, 3064, 2188, 1451, 3336, 386, 883];



var line = d3.svg.line()
.x(function(d,i) {return x(i);})
.y(function(d) {return y(d);});

var svg = d3.select("body")
        .append("svg")
        .attr("height", h)
        .attr("width", w)
    .append("g");

svg.append("path")
.data(datac)
.attr("class", "line")
.attr("d", line);   

var yScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d){ return d; })])
.range([0 + margin, h - margin]);

var xScale = d3.scale.ordinal()
        .domain(d3.range(dataset.length))
        .range([0 + margin, w - margin]);

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

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

svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + (h - margin) + ")")
.call(xAxis);

svg.append("g")
.attr("class", "y axis")
.attr("transform", "translate(" + margin+ ",0)")
.call(yAxis);


</script>

1 个答案:

答案 0 :(得分:3)

更新了您的代码:

var h = 400;
var w = 600;
var margin = 50;
var datac = [68, 1887, 1531, 645, 3870, 2759, 3064, 2188, 1451, 3336, 386, 883];

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

var y = d3.scale.linear()
    .domain([0, d3.max(datac)])
    .range([0 + margin, h - margin]);

var x = d3.scale.linear()
        .domain([0,datac.length])
        .range([0 + margin, w - margin]);

var line = d3.svg.line()
.x(function(d,i) {return x(i);})
.y(function(d) {return y(d);});

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

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

svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + (h - margin) + ")")
.call(xAxis);

svg.append("g")
.attr("class", "y axis")
.attr("transform", "translate(" + margin + ",0)")
.call(yAxis);

svg.append("path")
.attr("class", "line")
.attr("d", line(datac));  

Fiddle here