2016-06-25 7 views
1

Hoffe jemand kann mir helfen, weil ich keine Referenz zu diesem Fehler finden kann.Fehler in d3.js: t.map ist keine Funktion

Ich war auf diesem Stück Code arbeiten:

<script> 
var outerWidth = 500; 
var outerHeight = 250; 
var margin = {left: 90, top:30, right:30, bottom:30}; 
var barPadding = 0.2; 

var xColumn = "Samples"; 
var yColumn = "Conc"; 

var innerWidth = outerWidth - margin.left - margin.right; 
var innerHeight = outerHeight - margin.top - margin.bottom; 

var svg = d3.select("body").append("svg") 
     .attr("width", outerWidth) 
     .attr("height", outerHeight); 

var g = svg.append("g") 
     .attr("transform", "translate(" + margin.left + "," +margin.top +")"); 
var xAxisG = g.append("g") 
     .attr("transform", "translate(0," + innerHeight + ")"); 
var yAxisG = g.append("g"); 

var xScale = d3.scale.ordinal().rangeBands([0, innerWidth]); 
var yScale = d3.scale.linear().range([innerHeight, 0]); 

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


function render(data){ 

    xScale.domain(data.map(function(d){return d[xColumn];})); 
    yScale.domain(0, d3.max(data, function(d){return d[yColumn];})); 

    xAxisG.call(xAxis); 
    yAxisG.call(yAxis); 


    var bars = g.selectAll("rect").data(data); 

    bars.enter().append("rect") 
     .attr("width", xScale.rangeBand()); 

    bars.attr("x", function(d){return xScale(d[xColumn]);}) 
     .attr("y", function(d){return yScale(d[yColumn]);}) 
     .attr("height", function(d){return innerHeight - yScale(d[yColumn]);}); 

    bars.exit().remove(); 
} 

function type(d){ 
    d.conc = +d.conc; 
    return d; 
} 

d3.csv("conc.csv", type, render); 
</script> 

aber ich muss Fehlermeldung unten in der Web-Konsole:

„Typeerror: t.map ist keine Funktion

+0

In welcher Zeile wird der Fehler angezeigt? –

+0

Fehler @ http://d3js.org/d3.v3.min.js:2 –

+0

Fehler ist nicht in der Zeile ... –

Antwort

2

der Fehler ist auf dieser Linie:

yScale.domain(0, d3.max(data, function(d){return d[yColumn];})); 

sollte es sein

yScale.domain([0, d3.max(data, function(d){return d[yColumn];})]); 

Beachten Sie die Einfügung der eckigen Klammern [ und ]. Die domain() Funktion nimmt ein einzelnes Argument, ein Array mit zwei oder mehr Einträgen. Sie rufen es mit zwei Nummern an.