Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting d3.scale is undefined - works in codepen

For some reason I am getting d3.scale is undefined. D3 is properly loaded; I'm using the one listed on the main d3js.org site here.

My JS file handling the D3 code:

InitiateChart_1();

function InitiateChart_1()
{
    var data = [5,10,15,20,25];
    var height = 500, width = 500;

    var xScale = d3.scale.linear()
        .domain([0,60])
        .range([0,width]);

    var canvas = d3.select("body")
        .append("svg")
        .attr("id","chart1")
        .attr("width",width)
        .attr("height",height);

    var bars = canvas.selectAll("rect")
        .data(data)
        .enter()
            .append("rect")
            .attr("height",10)
            .attr("width",function(d){return xScale(d);})
            .attr("y",function(d,i){return i * 12;})
}

My entire HTML file:

<!doctype html>
<html>
<head>
    <title>SHED Report Prototype</title>
    <meta charset='utf-8'>
    <script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
    <script src='js/studentloans.js'></script>
</body>
</html>

Any help is greatly appreciated.

like image 933
Jacob Johnson Avatar asked Sep 09 '25 17:09

Jacob Johnson


1 Answers

The codepen is using version 3; this code uses version 4 of the api. d3.scale.linear has become d3.scaleLinear.

[...] However, there is one unavoidable consequence of adopting ES6 modules: every symbol in D3 4.0 now shares a flat namespace rather than the nested one of D3 3.x. For example, d3.scale.linear is now d3.scaleLinear, and d3.layout.treemap is now d3.treemap. [...]

-https://github.com/d3/d3/blob/master/CHANGES.md (emphasis mine)

like image 52
Quotidian Avatar answered Sep 12 '25 09:09

Quotidian