我正在嘗試使用百分比爲圖表的寬度和高度創建D3js的響應散點圖。基於百分比的D3js和變量
所以,我這些變量聲明往上頂:
var w = '100%';
var h = '100%';
我xScale
和yScale
正常工作,與我的輸出圈在SVG放置一起:
var xScale = d3.scale.linear()
.domain([0, d3.max(data, function(d) { return d["ttc"]; })])
.range([0, w]);
var yScale = d3.scale.linear()
.domain([0, d3.max(data, function(d) { return d["ctc"]; })])
.range([0, h]);
var svg = d3.select(el)
.append('svg')
.attr('height', h)
.attr('width', w);
svg.selectAll('circle')
.data(data)
.enter()
.append('circle')
.attr('cx', function(d) { return xScale(d["ttc"]); })
.attr('cy', function(d) { return yScale(d["ctc"]); })
.attr('r', 10);
然而,由於根據SVG的性質,從左上角顯示圓圈,而不是左下角的典型原點。爲了扭轉這種情況,通常我會將yScale
range
值切換爲[h, 0]
而不是[0, h]
。當我這樣做時,我收到錯誤Error: Invalid value for <circle> attribute cy="NaN"
。我能做些什麼來解決這個問題,並讓情節以百分比工作?
比例不能插值%值 - 您可以使用絕對值或僅使用數字100作爲最大值,並在使用特定值計算比例時添加%。 –