【问题标题】:D3 chart - How can I put the X-axis below the Y-axis?D3 图表 - 如何将 X 轴置于 Y 轴下方?
【发布时间】:2025-12-14 19:10:01
【问题描述】:

我希望我的 X 轴位于图表的底部,但是为什么数据设置为零时,它会到达 Y 轴的中心?如何防止它进入中心??

let x = d3.scaleBand().rangeRound([0, width]).padding(1),
  y = d3.scaleLinear().range([height, 0])

x.domain(data.map(function (d) { return d.timescale; }));
y.domain([0, d3.max(trends, function (c) {
  return d3.max(c.values, function (v) {
    return v.total;
  });
})]);

【问题讨论】:

  • 请编辑问题以显示用于创建轴的代码,尤其是.domain() 部分。
  • 请检查我已经上传了 x 和 y 的域

标签: javascript d3.js multiline yaxis


【解决方案1】:

问题发生是因为y.domain 的最大范围未定义。作为后备,垂直轴居中。

要解决这个问题,请确保设置了一个值,下面的示例使 y 比例至少在域 0 和 1 之间移动。

修复此问题后,x 轴应正确定位在图表区域的底部。

let maxExtent = Math.max(1, d3.max(trends, function (c) {
  return d3.max(c.values, function (v) {
    return v.total;
  });
}))

y.domain([0, maxExtent]);

【讨论】:

  • 我在条形图上遇到同样的问题,但在 x 轴上,域和比例与此非常相似,如何将条形图放在 X 轴的左侧而不是中心
  • 谢谢你上面的解决方案敌人折线图就像一个魅力!!!