防止区域绘制Y轴从ZERO开始

时间:2015-10-29 15:13:21

标签: javascript highcharts highstock

Y轴的配置是什么,不能从ZERO开始,而是以接近HighCharts / HighStock中最低Y轴数据点的值开始?

以下是具有非常大的Y轴数据值的图表演示,而最小的Y轴绘图点是零:http://jsfiddle.net/ubnjjups/

以及演示中使用的示例配置:

{
  series: [{
    type: 'area',
    data: [
      [1375660800000, 106861],
      [1375747200000, 107397],
      [1375833600000, 108674],
      [1375920000000, 108792],
      [1376006400000, 110504],
      [1376265600000, 110658],
      [1376352000000, 110792]
    ]
  }],
}

2 个答案:

答案 0 :(得分:1)

这里的问题是你正在使用' area'根据定义需要显示从0到该点的区域的类型。如果你切换到说'样条',它会自动执行您想要的操作。

$(function () {
$('#container').highcharts('StockChart', {
  series: [{
    type: 'spline',
    data: [[1375660800000, 106861],[1375747200000, 107397],[1375833600000, 108674],[1375920000000, 108792],[1376006400000, 110504],[1376265600000, 110658],[1376352000000, 110792],[1376438400000, 111095],[1376524800000, 112334],[1376611200000, 112775],[1376870400000, 113051],[1376956800000, 113426],[1377043200000, 113516]]
  }],
});

});

更新:

如果您想继续使用区域图表(因此您已填充区域),我建议您在yAxis上使用min。我在这里更改了你的代码

$(function () {
    $('#container').highcharts('StockChart', {
      series: [{
        type: 'area',
        data: [[1375660800000, 106861],[1375747200000, 107397],[1375833600000, 108674],[1375920000000, 108792],[1376006400000, 110504],[1376265600000, 110658],[1376352000000, 110792],[1376438400000, 111095],[1376524800000, 112334],[1376611200000, 112775],[1376870400000, 113051],[1376956800000, 113426],[1377043200000, 113516]]
      }],
        yAxis:{
         min: 105000
        }
    });
});

当您从服务器获取数据并计算最小值点时,可以提前计算min的值。希望这会有所帮助。

答案 1 :(得分:1)

基于@Vadim的回答,截至今天,我建议计算yAxis.min配置内部的最低Y轴值,以保持代码的一致性和可移植性。唯一的要求是将数据提取到图表初始化之外的变量中。

以下格式为<Timestamp>, <Y-axis value>的数据可行:

var data = [
  [1375660800000, 106861],
  [1375747200000, 107397],
  [1375833600000, 108674]
];

$('#container').highcharts('StockChart', {

  series: [{
    type: 'area',
    data: data
  }],

  yAxis: {
    min: (function() {
      var min = data[0][1];
      for (var i = 0; i < data.length; i++) {
        var value = data[i][1];
        if (value < min) {
          min = value;  
        }
      }
      return min;
    })()
  }

});

现场演示:http://jsfiddle.net/squuwqmg/