【发布时间】:2014-07-14 00:29:36
【问题描述】:
我正在学习 D3,我可以看到我用这两个东西得到了相同的可视化:
变量 w = 600; 变量 h = 100; var 数据集 = [1, 6, 3, 4, 10, 4, 9] var svg = d3.select("body").append("svg") .attr("高度", h) .attr("宽度", w) var xScale = d3.scale.linear() .domain([0, dataset.length]) .range([0, w]);使用高度属性:
var yScale = d3.scale.linear() .domain([0, d3.max(数据集)]) .range([h, 0]); svg.selectAll("矩形") .data(数据集) 。进入() .append("矩形") .attr({ x: function(d, i) { return xScale(i); }, y: function(d) { return yScale(d); }, 宽度:w / dataset.length, 高度:函数(d){返回h-yScale(d); }, 填写:“青色” });或者设置y:
var yScale = d3.scale.linear() .domain([0, d3.max(数据集)]) .range([0, h]); svg.selectAll("矩形") .data(数据集) 。进入() .append("矩形") .attr({ x: function(d, i) { return xScale(i); }, y: function(d) { return h - yScale(d); }, 宽度:w / dataset.length, 高度:函数(d){返回yScale(d); }, 填写:“青色” });其中一个更正确,如果正确,为什么?
【问题讨论】:
-
我猜
yScale(d)是h/2。一般来说,这些变体不会给您相同的结果。 -
哦,对了,您已经交换了范围端点。是的,这会给你相同的结果。没有区别 - 完全取决于您的喜好。
-
@LarsKotthoff: 做了一个回答,似乎前者与 yAxis 函数配合得更好
标签: javascript svg d3.js