首页 文章

Highcharts:确保y轴0值位于图表底部

提问于
浏览
30

我正在页面上输出一系列高级图表 . 在某些情况下,指定时间段内的所有数据可能会返回0值 .

在这种情况下,图表如下所示:http://jsfiddle.net/charliegriefer/KM2Jx/1/

只有1个y轴标签,0,它位于图表的中间 .

我想强制y轴的0值位于图表的底部,这与页面上有数据的其他图表一致 .

尝试了各种yAxis属性,例如“min:0”,“minPadding:0”,“maxPadding:0”,“startOnTick:true” .

似乎它应该非常简单,但我不知所措:(

相关的yAxis代码:

yAxis: {
    min: 0, 
    minPadding: 0, 
    startOnTick: true, 
    title: {
        text: ""
    }
},

8 回答

  • 41

    我只能通过提供yAxis max 来获得它来显示它"correctly" . 我认为当您没有提供具有y值的数据元素时,这是一个HighCharts问题 . 它绘制了它认为可以的最佳图表 .

  • 0

    我发现了另一个(也很简单)的解决方案:

    您可以设置y轴 minRange 属性:

    yAxis: {
        ...
        minRange : 0.1
    }
    

    这使得Highcharts在所有数据为0时呈现yAxis最小值和最大值 .

    更新:

    Highcharts 4.1.9修复还需要:

    plotOptions: {
                line: {
                    softThreshold: false
                }
            }
    

    updated js fiddle

  • 3

    我还把它发布到了HighCharts论坛,在那里我收到了似乎有效的回复 . 不幸的是,它将涉及我在渲染图表之前对数据进行一些预处理,以便检查所有“0”数据值......但它会起作用 . 只是希望HighCharts有更“内置”的东西 .

    因此,在总结“y”值之后,如果我得到0,则y轴属性应如下所示:

    yAxis: {
        minPadding: 0, 
        maxPadding: 0,         
        min: 0, 
        max:1,
        showLastLabel:false,
        tickInterval:1,
        title: {
                text: ""
        }
    }
    

    见:http://jsfiddle.net/KM2Jx/2/

    键似乎是“max”和“showLastLabel”属性 .

  • 0

    这是我提出的一个修复程序,不需要对数据进行任何预处理,只需让highcharts执行它,就像在更新之前一样 . http://jsfiddle.net/QEK3x/

    if(chart.yAxis[0].dataMax === 0)
    {
       chart.yAxis[0].setExtremes(0, 5);
    }
    

    您只需要检查第一个系列轴,就好像第一个系列轴不是0那么问题就不会发生 . 我可能会向高图表提交拉取请求,尽管我觉得他们出于某种原因想要使用此功能 .

  • 0

    从Highcharts 5.0.1开始,您也可以使用softMax .

    softMax:Number轴的软最大值 . 如果系列数据最大值大于此值,则轴将保持此最大值,但如果系列数据最大值更高,则轴将弯曲以显示所有数据 .

    yAxis: {
        min: 0,
        softMax: 100,
        ...
    }
    

    以下是柱形图的示例:http://jsfiddle.net/84LLsepj/

    请注意,目前,在Highcharts 5.0.7中,它似乎不适用于所有类型的图表 . 正如您在this other jsfiddle中看到的那样,它不适用于折线图 .

  • 13

    只需添加“min”选项即可

    yAxis: {
       min: 0
    }
    
  • 5

    对于Highcharts 5.x.x,您应该只能指定:

    yAxis: {
      softMin: 0,
      softMax: 1,
    };
    

    这不适用于折线图,这要求您还在与上面相同的配置对象中设置 minRange . 尝试使用不同的值,因为定义了例如 minRange: 6 ,在yAxis上创建了一个介于0和4之间的范围 .

  • 2

    minRange:1或者你感觉如何以分数显示
    softMax:100或者你感觉如何

    Result

    yAxis: {
             minRange : 1,
             softMax: 100
           }
    

相关问题