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

时间:2017-02-27 18:07:58

标签: javascript graph charts c3.js

我正在创建一个包含数据分组的c3图表,并且我希望有一个显示最大值的y轴网格线,组合的数据组合不应超过。

因此,可以调用y轴网格线"最大"

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

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

是否只有将y轴设置为显示比y轴网格线更大的5个值?

2 个答案:

答案 0 :(得分:1)

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

grid: {
    y: {
        lines: [{ value: 20 }], 
    }
},
axis: {
    y: {
        padding: {top:5, bottom,0},
        max: 20
    }
}

在这种情况下,我将最大值设置为与网格线值相同,并使用填充在其上方创建一个小空间。这将处理您的数据低于网格线的情况。但是,如果您的数据超过(网格线+填充)总数,那么图表不会增长以容纳该数据,因为最大设置是固定的。因此,如果您的数据大于最大值,则需要使用javascript动态更改此最大值,方法是找到数据中的最大值,如果超过网格线值,则将max设置为高于此值,如下所示...

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

我刚注意到您的数据从未超过网格线,因此您可以使用此答案的第一部分。我已将其余部分留在这里,以防其他人想要更动态的解决方案。请注意,如果要将其显式设置为高于网格线的值,也可以仅使用最大值而不使用填充。

答案 1 :(得分:1)

在撰写本文时,实际上有一种方法可以在将y-max设置为特定最大值后将其重置为动态。您可以将max设置为System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12; ,如下所示:undefined

在这里,有一个有效的jsfiddle