javascript - 将 Y 轴上下颠倒

标签 javascript d3.js

我在 D3 中创建了一个简单的条形图,但条形图是从上到下创建的,而不是从下到上创建的。下面是 xScale、yScale 和 bar 生成代码:

var xscale = d3.scale.linear()
  .domain([0, data.length])
  .range([0, 240]);

var yscale = d3.scale.linear()
  .domain([0, 100])
  .range([0, 240]);

var bar = canvas.append('g')
  .attr("id", "bar-group")
  .attr("transform", "translate(10,20)")
  .selectAll('rect')
  .data(data)
  .enter()
  .append('rect')
  .attr("class", "bar")
  .attr("height", function(d, i) {
    return yscale(d);
  })
  .attr("width", 15)
  .attr("x", function(i) {
    return yscale(i);
  })
  .attr("y", 0)
  .style("fill", function(i) {
    return colors(i);
  });

尝试交换 yScale 范围但没有成功。 Here is the fiddle.

最佳答案

在 SVG 坐标系中,原点 (0,0) 位于左上角,而不是左下角。

除此之外,您的 SVG 高度只有 150 像素。因此,改变你的比例:

var yscale = d3.scale.linear()
    .domain([0, 100])
    .range([0, 150]);

以及你的酒吧的数学:

.attr("height", function(d, i) {
    return yscale(d);
})
.attr("y", function(d){
    return 150 - yscale(d)
})

这是您更新的 fiddle :https://jsfiddle.net/bga2q72f/

PS:x 和 y 位置不要使用相同比例。实在是太困惑了。

关于javascript - 将 Y 轴上下颠倒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41340904/

相关文章:

javascript - D3.js更改时间格式并将数据导出为csv

javascript - D3.js:从选择中删除 force.drag

javascript - 使用 d3 选中/取消选中复选框

javascript - Underscore.js - 在嵌套的 Json 中过滤

javascript - QuerySelector 没有显示我输入的内容 + 为什么 onClick 不能使用 index.html 和 app.js 文件?

javascript - 如何禁用 Jquery 自动完成组合框中的特定选项

javascript - Angular (v4) 表单数据对象不匹配 json 数据

javascript - d3 我希望隐藏网格线溢出

javascript - AJAX 应用程序中的国际化和本地化

javascript - D3 绘制数据集的选择性部分