【问题标题】:Prevent Area plot Y-axis from starting with ZERO防止面积图 Y 轴从零开始
【发布时间】:2015-10-29 15:13:20
【问题描述】:

Y 轴不从零开始而是从接近 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]
    ]
  }],
}

【问题讨论】:

    标签: javascript highcharts highstock


    【解决方案1】:

    这里的问题是您使用的是“区域”类型,根据定义,它需要显示从 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 的值。希望这会有所帮助。

    【讨论】:

    • 谢谢。但是,您的示例在该行下方没有填充区域。有可能解决这个问题吗?
    • 我希望 Highcharts 有一个可以自动执行此操作的配置选项。我现在将按照您的建议设置 yAxis.min。谢谢!
    【解决方案2】:

    根据@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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多