2016-07-26 75 views
22

這裏是我的代碼片段的特性「軸」:D3.js - 無法讀取未定義

var xScale = d3.scaleLinear().range([MARGINS.left, WIDTH - MARGINS.right]).domain([scaleMin, scaleMax]); 
var yScale = d3.scaleLinear().range([HEIGHT - MARGINS.top, MARGINS.bottom]).domain([minValue,maxValue+numberOfSignals*300]); 
xAxis = d3.svg.axis().scale(xScale); 
yAxis = d3.svg.axis().scale(yScale).orient("left"); 

vis.append("svg:g") 
     .attr("transform", "translate(0," + (HEIGHT - MARGINS.bottom) + ")") 
     .call(xAxis); 

vis.append("svg:g") 
     .attr("transform", "translate(" + (MARGINS.left) + ",0)") 
     .call(yAxis); 

這是我的代碼。但每次我運行它我得到的錯誤「情節:91未捕獲TypeError:無法讀取未定義的屬性'軸'。 事情是它的工作。有沒有更新? 謝謝!

+1

您使用D3哪個版本的? – Cyril

+0

最新的 - 4.1.1 – cmplx96

+0

使用版本3它會工作..您使用的API是版本3. – Cyril

回答

52

對於版本4 它必須是:

var xScale = d3.scaleLinear().range([MARGINS.left, WIDTH - MARGINS.right]).domain([scaleMin, scaleMax]); 

var yScale = d3.scaleLinear().range([HEIGHT - MARGINS.top, MARGINS.bottom]).domain([minValue,maxValue+numberOfSignals*300]); 


var xAxis = d3.axisBottom() 
    .scale(xScale); 

var yAxis = d3.axisLeft() 
    .scale(yScale); 

,而不是下面這段代碼(將在3版工作):

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

嘿,Cyril,我在編輯問題以添加d3v4標籤,我剛剛意識到其中有兩個......您是否有足夠的RP來使它們成爲同義詞? –

+1

Nopes @GerardoFurtado我沒有RP去做。 – Cyril

+0

@GerardoFurtado我只知道d3v4。你見過什麼其他標籤? – altocumulus

相關問題