【问题标题】:D3 Y Scale, y vs height?D3 Y 比例,y 与高度?
【发布时间】: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


【解决方案1】:

现在我进入了后面的章节,似乎以前的选项在创建 yAxis 时使用range([h, 0]) 更好。如果我使用后一个选项range([0, h]),则图形如下所示(没有对 yAxis 调用进行转换:

这通常不是人们想要的。

【讨论】:

    猜你喜欢
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多