2015-06-26 49 views
0

我正在处理一个需求,我需要两个窗格Y轴上有一个共同的x轴。我能够做到这一点。然而,在每个Y轴上,我需要10到100的单位,例如10到50的间隔为1厘米,50到100的间距为5厘米。 这在附加的屏幕上打印。Highcharts - 即使刻度不均匀空间

有没有高炉的功能,我可以用来实现这一目标?我研究了tickPixelInterval和lograthmic坐标轴,但不能走得太远:(

此外,我需要确保y轴上的比例(10到100)总是显示出来,即使我没有数据点映射到它。换句话说,如果我只有两个数据点,例如60和90,那么60以下的类别在图表中是不可见的。但是,我需要所有10到100的映射在任何时候都可见。 。谢谢你在前进!

+0

屏幕打印 - http://forum.highcharts.com/topic33268/ –

回答

1
  1. 轴刻度从10到100

使用轴的最小值和最大值可以设置比例。如果未保留比例(例如从11到99),则将轴的startOnTick和endOnTick设置为false将解决问题。

实施例:http://jsfiddle.net/kcrv97sm/

yAxis: { 
    min: 10, 
    max: 100, 
    tickInterval: 10, 
    showLastLabel: true, 
    startOnTick: false, 
    endOnTick: false 
} 

API: http://api.highcharts.com/highstock#yAxis.min http://api.highcharts.com/highstock#yAxis.startOnTick

  • 不均匀间距
  • 默认可用轴的类型是 “线性”, “对数”,“日期时间”或“类别”。

    在你的情况下,这是不够的。您可以尝试编写或应用自定义Highstock扩展 - 包装器,然后将更改比例。

    例1 - 一个功能:http://jsfiddle.net/a3fLLyo4/73/

    示例2 - 两个功能:http://jsfiddle.net/a3fLLyo4/69/

    你将不得不拿出功能(S),将描述所有的设置上轴。您没有指定如果在60到80之间的比例应该是线性的或更复杂的。

    Highcharts.wrap(Highcharts.Axis.prototype, 'translate', function (proceed) { 
        // Normal Translation 
        var result = proceed.apply(this, [].slice.call(arguments, 1)); 
    
        // Apply curving 
        if (this.options.curvature) { 
         var val = 1 - Math.sqrt(1 - Math.pow(((arguments[1]-this.min)/(this.max - this.min)), 2)), 
          result = (this.len * val); 
         if (arguments[2] == 0) { 
          result = this.len - result; 
         } 
        } 
        return result; 
    
    }); 
    
    +0

    完美...谢谢..这有助于我的实施更大程度上...... :) –