Javascript d3.js-条形图不会按比例显示
我更新了代码以使用D3中的scale方法。但是,从那时起,我的条形图将不会显示。这个问题的原因是什么Javascript d3.js-条形图不会按比例显示,javascript,svg,charts,d3.js,bar-chart,Javascript,Svg,Charts,D3.js,Bar Chart,我更新了代码以使用D3中的scale方法。但是,从那时起,我的条形图将不会显示。这个问题的原因是什么 var dataset = [ ]; for (var i = 0; i < 14; i++) {var newNumber = Math.round(Math.random() * 70); dataset.push(newNumber);} var svg = d3.select("body") .append("svg")
var dataset = [ ];
for (var i = 0; i < 14; i++) {var newNumber = Math.round(Math.random() * 70);
dataset.push(newNumber);}
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var widthScale = d3.scale.linear()
.domain([0,d3.max(dataset)])
.range([0,w]);
svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", 3)
.attr("y", function (d,i) {return i* 36;})
.attr("width", function(d) {return widthScale;})
.attr("height", h / dataset.length - barPadding)
.attr("fill", function(d) {return "rgb(0, 0, " + (d * 10) + ")";});
D3刻度只是一个函数,它将给定输入域的值转换为数据值,从0到最大值转换为图表宽度的指定输出范围。因此,您必须对数据应用比例,例如,宽度比例d。现在,您正在将widthScale函数指定给rect的宽度属性,而不是输出值
查看工作小提琴:我看不到您在哪里设置x、y刻度。x应为d3.scale.ordinal,y应为d3.scale.linear。您是否尝试过从基本条形图模板开始?我可以通过将.attrwidth,function d{return widthScale;}更改为just.attrwidth,widthScale来修复它。谢谢@普格多