2015-06-26 63 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

    完美...謝謝..這有助於我的實施更大程度上...... :) –