Javascript 如何动态设置c3图表的y轴比例?
我正在制作一个包含分组数据的c3图表,我希望有一条y轴网格线,显示最大值,分组数据组合不应超过该值 因此,y轴网格线可以称为“最大” 我知道如何生成网格,但它并不总是显示出来,因为分组的数据可能远远低于网格值。但我希望网格始终显示 我看了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: {
是否需要设置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(未定义)代码>
在这里,有一个工作。数据实际上可以超过网格线,但不应该超过,因为这是不好的。所以,也谢谢最后一部分。