Javascript 如何在海图中为轴设置静态最小值

Javascript 如何在海图中为轴设置静态最小值,javascript,highcharts,Javascript,Highcharts,我有从1到500的基于时间的数据。时间绘制在x轴上,值绘制在y轴上 当最小和最大数据点之间的范围很大时,y轴的开始标签为0。通过设置yAxis.startOnTick=false,我可以告诉Highcharts不要显示标签

我有从1到500的基于时间的数据。时间绘制在x轴上,值绘制在y轴上

当最小和最大数据点之间的范围很大时,y轴的开始标签为0。通过设置
yAxis.startOnTick=false,我可以告诉Highcharts不要显示标签
对于无法判断第一个点是0还是其他值的问题。这里的0看起来也是y的最小范围
0,而不是1


Highcharts是否可以显示第一个标签,并且第一个标签应始终设置为数据集中的最小值(相对于其轴)。

我很惊讶这是多么困难。不是最佳解决方案,但HighChart api的最佳解决方案:

var someData = [1,5,82,9,300,5,42,199,5,6,99,1,56,52,250,64];

var chart = new Highcharts.Chart({

    chart: {
        renderTo: 'container'
    },
    yAxis:{
        min: -10,
        tickInterval: 1,
        labels: {
            formatter: function() {
                if (this.value < someData[0])
                    return null;
                else if (this.value == someData[0])
                    return this.value;
                else if (this.value % 50 == 0)
                    return this.value;
            }
        }
    },
    series: [{
        data: someData
    }]

});
var someData=[1,5,82,9300,5,42199,5,6,99,1,56,52250,64];
var图表=新的Highcharts.图表({
图表:{
renderTo:“容器”
},
亚克斯:{
最小:-10,
时间间隔:1,
标签:{
格式化程序:函数(){
if(this.value
优化的解决方案是将
yAxis.labels.formatter
this.isFirst
this.axis.dataMin
一起使用,如下所示:

yAxis:{
    labels: {
        formatter: function() {
            if(this.isFirst)
                return this.axis.dataMin;
            return this.value;
        }
    }
}
有关示例,请参见

这样做的好处是,您不必手动设置
tickInterval
,这样可以节省大量对
formatter
的调用,并让Highcharts自己计算标签间隔。此外,它使用最小数据值的axis知识,而不必检查数组(您可能需要遍历数组以找到最小值)

请注意,此处必须将
yAxis.min
设置为合理的值(最适合
0
和正数据)。如果y轴远低于最小数据点,则第一个标签将不是0处的标签


询问此问题时,
this.axis
值不可用。

+1。这比我想到的要好得多-我只是告诉Highcharts当标签为“0”时,显示“1”。我需要对数据进行一些额外的预处理,以使您的解决方案100%使用我的数据集,即设置适当的刻度间隔并确定数据集中的最低值。谢谢哦,当Highcharts想要将第一个标签设置为“0”时,我可能还会做一些额外的处理,仅将tickInterval设置为1,除非在调用
labels.formatter
多达500次时确实没有太多开销。这在版本4中不再有效。我仍在搜索解决方案。@sylouuu似乎仍在使用v4:,只是必须更新js include。