d3找不到线性属性/方法?

时间:2016-07-02 17:18:26

标签: javascript d3.js

我正在尝试做一些简单的d3,但一直都会出错:

app.js:4未捕获的TypeError:无法读取属性' linear'未定义的

此代码直接来自行动中的D3.js:https://www.manning.com/books/d3-js-in-action

html和js如下:

var yScale = d3.scale.linear()
               .domain([0,100,500])
               .range([0,50,100])
               .clamp(true);

d3.select("svg")
  .selectAll("rect")
  .data([14, 68, 24500, 430, 19, 1000, 5555])
  .enter()
  .append("rect")
  .attr("width", 10)
  .attr("height", function(d) {return yScale(d);})
  .style("fill", "blue")
  .style("stroke", "red")
  .style("stroke-width", "1px")
  .style("opacity", .25)
  .attr("x", function(d,i) {return i * 10;})
  .attr("y", function(d) {return 100 - yScale(d);});

HTML:

<!doctype html>
<html>
    <head>
    </head>
    <body>
        <svg  />
       <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.1.0/d3.js" type="text/JavaScript"></script>
       <script src="app.js" type="text/JavaScript"></script>
    </body>
</html>

1 个答案:

答案 0 :(得分:3)

显然,自动作中的D3.js发布后,语法已发生变化......来自:

d3.scale.linear().domain().range();

d3.scaleLinear().domain().range();

修改

D3.js版本4.x最近问世了。大多数教程使用3.x,因此您可能希望在学习时使用它。