Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何动态设置c3图表的y轴比例?_Javascript_Graph_Charts_C3.js - Fatal编程技术网

Javascript 如何动态设置c3图表的y轴比例?

Javascript 如何动态设置c3图表的y轴比例?,javascript,graph,charts,c3.js,Javascript,Graph,Charts,C3.js,我正在制作一个包含分组数据的c3图表,我希望有一条y轴网格线,显示最大值,分组数据组合不应超过该值 因此,y轴网格线可以称为“最大” 我知道如何生成网格,但它并不总是显示出来,因为分组的数据可能远远低于网格值。但我希望网格始终显示 我看了y轴的填充,但它使用像素,很难精确 是否需要设置y轴以显示比y轴网格线大5个值的值?不幸的是,C3没有“将y轴设置为y值或最大数据的最大值”的设置。但是,让我们假设您已经使用如下方法添加了网格线。然后,可以使用此处显示的设置设置y轴填充和最大值: grid: {

我正在制作一个包含分组数据的c3图表,我希望有一条y轴网格线,显示最大值,分组数据组合不应超过该值

因此,y轴网格线可以称为“最大”

我知道如何生成网格,但它并不总是显示出来,因为分组的数据可能远远低于网格值。但我希望网格始终显示

我看了y轴的填充,但它使用像素,很难精确


是否需要设置y轴以显示比y轴网格线大5个值的值?

不幸的是,C3没有“将y轴设置为y值或最大数据的最大值”的设置。但是,让我们假设您已经使用如下方法添加了网格线。然后,可以使用此处显示的设置设置y轴填充和最大值:

grid: {
    y: {
        lines: [{ value: 20 }], 
    }
},
axis: {
    y: {
        padding: {top:5, bottom,0},
        max: 20
    }
}
在本例中,我将max值设置为与gridline值相同,并使用padding在其上方创建一个小空间。这将处理数据低于网格线的情况。但是,如果您的数据超过(网格线+填充)总数,则图表将不会增长以容纳该数据,因为最大值设置是固定的。因此,如果您的数据大于最大值,则需要使用javascript动态更改此最大值,方法是查找数据中的最大值,并将最大值设置为高于此值,如果它超过网格线值,则需要这样做

if(highValue > gridlineValue)
  chart.axis.max(highValue);
else
  chart.axis.max(gridlineValue);

我只是注意到你的数据从来没有超过网格线,所以你可以用这个答案的第一部分。我把剩下的留在这里,以防其他人想要更动态的解决方案。请注意,如果要显式地将最大值设置为高于网格线的值,也可以使用不带填充的最大值。

在撰写本文时,实际上有一种方法可以在将y-max设置为特定的最大值后将其重置为动态。您可以通过将最大值设置为
未定义的
,例如:
chart.axis.max(未定义)


在这里,有一个工作。

数据实际上可以超过网格线,但不应该超过,因为这是不好的。所以,也谢谢最后一部分。