d3.js&nvd3.js - 如何设置y轴范围

Vie*_*iet 54 javascript d3.js nvd3.js

我正在尝试将图表的y轴范围设置为1-100.

咨询了API文档,并找到了一个可能的解决方案,其中包含了axis.tickValues,如 https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-tickValues

但是,使用该选项不起作用.进一步阅读上面在axis.tickSize下面链接的文档页面,发现以下行

结束标记由相关比例的域范围确定,并且是生成的路径域的一部分而不是刻度线

所以我认为设置范围的最小值和最大值不能通过Axis选项完成.

关于我可以指定范围的任何想法?

Vie*_*iet 78

找到了解决方案.

附加.forceY([0,100])到图表的实例化会强制轴采用数组中指定的范围.

从这里的例子http://nvd3.org/livecode/#codemirrorNav

附加.forceY([0,100])到图表变量有效.

  • 注意:forceY似乎不适用于堆积区域图表= / (6认同)
  • 注意:您可以使用`.forceY(val)`强制最小值,最大值将保持动态. (5认同)
  • 这对我来说可以扩展线图表的最大/最小范围,但不能使范围小于数据. (4认同)
  • `.forceY()`确保你给它的值会出现在屏幕的某个地方.数据集中的任何Y值也将出现在屏幕上.您不能使用它来强制屏幕外的某些数据点. (3认同)
  • 这不适用于nvd3 multibarchart (2认同)

Bob*_*rde 32

正如名称所示,这会将数组中的值添加到您的y域中,而不会将y域设置为[0,100].所以,如果你将其设置为[0,100]您的信息的域名是-10110,该域名将是[-10,110].

现在,如果您希望域名[0,100]即使您的数据更大,也可以使用chart.yDomain([0,100])...但通常您希望您的域名包含您的数据,因此我强烈建议您使用chart.forceY代替chart.yDomain.正如您将看到的,forceY最常见的用途之一是forceY([0])始终在域中使0.

希望能帮助您了解函数的实际功能,以及arboc7,这可以解释为什么它不能使范围小于数据集.


小智 10

对于堆积区域图表,.forceY([0,100])不起作用.请改用.yDomain([0,100])


sep*_*ans 7

如果您的意思是设置y-domain堆积区域图表(应显示的数字范围),这对我有用:

nv.models.stackedAreaChart()
  .x(function(d) {...})
  .y(function(d) {...})
  .yDomain([0, maxY])
...
Run Code Online (Sandbox Code Playgroud)