2016-07-02 14 views
0

Ich versuche, einige einfache d3 Sachen zu tun, sondern halten einen Fehler bekommen:d3 kann lineare Eigenschaft/Methode nicht finden?

app.js: 4 Uncaught Typeerror: kann Eigenschaft ‚linear‘ undefinierter

dieser Code ist gerade aus D3 gelesen Js in Aktion: https://www.manning.com/books/d3-js-in-action

die html und js sind unten:

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> 

Antwort

3

Anscheinend Syntax seit D3.js in Aktion geändert wurde veröffentlicht ... von:

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

zu

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

EDIT:

D3.js Version 4.x kam kürzlich heraus. In den meisten Lernprogrammen wird 3.x verwendet. Sie können dies also beim Lernen verwenden.

+0

Ja, d3 4.x wurde offiziell diese letzte Woche veröffentlicht, glaube ich. Die meisten Ressourcen, die Sie sehen werden, werden Pre-4.x d3 abdecken. Wenn Sie mit d3 und den folgenden Handbüchern noch nicht vertraut sind, sollten Sie eine 3.x-Version von d3 anstelle von 4.1 verwenden. – elliot

+0

Interessant. Danke für die Hintergrundinfo/Update. –