【问题标题】:How to set a static minimum value for axes in Highcharts如何在 Highcharts 中为轴设置静态最小值
【发布时间】:2011-11-18 22:24:51
【问题描述】:

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

当最小和最大数据点之间的范围很大时,y 轴的起始标签为 0。我可以通过设置 yAxis.startOnTick = false; 告诉 Highcharts 不要显示标签,但这并不是我真正想要的.

Here is a jsfiddle 的问题是您无法判断第一个点是 0 还是其他值。这里有 0 看起来也像 y 的最小范围是 0,而不是 1。

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

【问题讨论】:

    标签: javascript highcharts


    【解决方案1】:

    我很惊讶这是多么困难。不是最佳解决方案,而是最好的I can dream up 与 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
        }]
    
    });
    

    【讨论】:

    • +1。这比我想出的要好得多——我只是告诉 Highcharts,当标签为“0”时,改为显示“1”。我需要对数据进行一些额外的预处理,以使您的解决方案能够 100% 地使用我的数据集,即设置适当的刻度间隔并确定数据集中的最小值。谢谢!
    • 哦,我可能还会做一些额外的处理,仅当 Highcharts 想要将第一个标签设置为“0”时将 tickInterval 设置为 1,除非真的没有那么多调用 labels.formatter 最多 500 次时所涉及的开销。
    • 这不再适用,版本 4。我仍在寻找解决方案。
    • @sylouuu,似乎仍然可以使用 v4:jsfiddle.net/KS99A/32,只需要更新 js 包含。
    【解决方案2】:

    一种解决方案(优化Marks answer)是将yAxis.labels.formatterthis.isFirstthis.axis.dataMin 一起使用,如下所示:

    yAxis:{
        labels: {
            formatter: function() {
                if(this.isFirst)
                    return this.axis.dataMin;
                return this.value;
            }
        }
    }
    

    有关示例,请参阅 this JSFiddle demo

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-17
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      相关资源
      最近更新 更多