Javascript NVD3/D3改变y轴最小值

Javascript NVD3/D3改变y轴最小值,javascript,d3.js,nvd3.js,Javascript,D3.js,Nvd3.js,我目前正在使用NVD3制作一些折线图。我想知道是否有可能使y轴刻度始终从0开始。目前,它总是从最低的y值开始。我已尝试使用TickValue,但不想更改其他值。我还尝试添加一个值为0的数据点,但这似乎是一个解决方法,它会影响图形的外观。有什么想法吗?您不需要添加“虚拟”数据点,只需调整标尺的输入域,例如 chart.yAxis.scale().domain([0, maxValue]); 大多数图表都有forceX和forceY函数,它们接受一个值数组。您可以这样使用它: var char

我目前正在使用NVD3制作一些折线图。我想知道是否有可能使y轴刻度始终从0开始。目前,它总是从最低的y值开始。我已尝试使用TickValue,但不想更改其他值。我还尝试添加一个值为0的数据点,但这似乎是一个解决方法,它会影响图形的外观。有什么想法吗?

您不需要添加“虚拟”数据点,只需调整标尺的输入域,例如

chart.yAxis.scale().domain([0, maxValue]);

大多数图表都有forceX和forceY函数,它们接受一个值数组。您可以这样使用它:

  var chart = nv.models.lineChart();
  chart.forceX([0, 10])
  chart.forceY([-1, 1])
这将确保在xAxis上始终显示至少0和10,但如果直接操作域,则不会限制域。也就是说,如果您执行以下操作:

chart.yAxis.scale().domain([0, maxValue]);

您的数据有负X值,不会显示在图表上,因为它们不在指定的域内,但如果您使用forceX,它们会出现。

我发现此测试页在计算nvd3图表的属性时非常有用(即使您不使用angular btw,也适用)

  • 单击“扩展”
  • 单击
    forceY
  • 键入一个值,如
    -5
    ,然后将其添加以立即查看效果(示例图中已显示零)

您只能通过chart.forceX(0)设置最小值。

我正在尝试设置比例,但它不起作用--例如:chart.y1Axis.scale().domain([0,maxValue]).tickFormat(d3.format(',f'));当你调用update()时,它可能会直接破坏你设置的值。答案是:我只想在yAxis上设置最小值,最大值应该自动设置。我发现,如果只使用单个值而不是[min,max]设置的数组调用forceY,nvd3会将该值设置为最小值,并自行计算最大值。TL;DR->使用forceY(0)将最小yAxis值设置为0,并让nvd3:)@Fidel90计算最大值,谢谢。你应该把你的评论转换成答案。你的评论应该被选为正确答案。也许在回答之后有了变化。。。我必须将它作为.force([0])传递,才能将最小值设置为0。有没有办法获得绘图显示的图表的
maxValue
?我使用的是nvd3箱线图,没有显示异常值。所以我想用图表计算的最大值作为上限。你可以从你的数据中得到最大值。值得注意的是,这不适用于多图表。在我意识到这一点之前,我一直在试图弄明白为什么这对我的图表不起作用