NVD3/D3改变y轴最小值

Siv*_*iva 11 javascript d3.js nvd3.js

我目前正在使用NVD3制作几个折线图.我想知道是否有可能使y轴滴答始终从0开始.目前它总是从最低的y值开始.我尝试过使用tickValues,但我不想更改其他值.我还试图添加一个值为0的数据点,但这似乎是一种解决方法,它会影响图形的外观.有任何想法吗?

Wol*_*des 29

大多数图表都有一个forceX和forceY函数,它们采用一组值.你可以像这样使用它:

  var chart = nv.models.lineChart();
  chart.forceX([0, 10])
  chart.forceY([-1, 1])
Run Code Online (Sandbox Code Playgroud)

这将确保您的xAxis上始终显示至少0和10,但如果您直接操作它,则不会限制域.那就是你做的事情:

chart.yAxis.scale().domain([0, maxValue]);
Run Code Online (Sandbox Code Playgroud)

并且您的数据具有负值X值,这些值不会显示在图表上,因为它们将超出指定的域,但如果您使用forceX,它们将会出现.

  • 答案的小补充:我想只在yAxis上设置最小值,最大值应自动设置.我发现,如果你只用一个值而不是[min,max]设置的数组调用forceY,nvd3将这个值设置为最小值并自己计算最大值.TL; DR - >使用forceY(0)将最小yAxis值设置为0,并让最大值由nvd3计算:) (26认同)

Lar*_*off 9

您不需要添加"虚拟"数据点,您只需调整比例的输入域,例如

chart.yAxis.scale().domain([0, maxValue]);
Run Code Online (Sandbox Code Playgroud)