【问题标题】:D3.js Line chart with relative min and max in Y axisD3.js 折线图,Y 轴相对最小值和最大值
【发布时间】:2014-10-22 20:47:25
【问题描述】:

考虑以下 VND3 折线图:http://jsfiddle.net/tramtom/hfv68yan/

该图绘制的线没问题,但是我的大部分数据在很长一段时间内都是静态的,并且这两个系列将始终在图形的顶部有一个在底部轴上。

如何创建 Y 轴的相对最小值和最大值,使系列的线几乎在中间或至少间隔开,以使较低值的系列几乎不完全位于 X 轴上。

需要在最小值下方添加 100 个单位,在最大值上方添加 100 个单位,这样线条就不会位于图形的顶部或底部。

我尝试像这里http://jsfiddle.net/tramtom/hfv68yan/1/ 一样设置域和范围值,但没有效果

var yScale = d3.scale.linear()
.domain([
     d3.min(data, function (d) {
         return d.y;
     }) - 100,
     d3.max(data, function (d) {
         return d.y;
     }) + 100
])
.range([
     d3.min(data, function (d) {
         return d.y;
     }),
     d3.max(data, function (d) {
         return d.y;
     })
]);

【问题讨论】:

标签: javascript d3.js charts nvd3.js


【解决方案1】:

您需要通过将.forceY([0,500]) 添加到图表实例化来强制轴范围。

This SO answer 可能会有所帮助。这至少应该为您指明正确的方向。

【讨论】:

  • 使用 '.forceY()' 使 Y 轴“静态”,当您通过单击图例添加或删除系列时,图表不会设置动画并调整 Y 轴以反映当前系列最大和最小。我正在寻找一种使图表保持相同行为的方法,只需在当前系列的最大值和最小值中添加一定数量的单位。
  • 我认为 .forceX() 或 .forceY() 不起作用,然后我在这个答案中注意到您需要将范围放入数组中,并将其传递给方法。
猜你喜欢
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多