所以我通過動態計算step
尺寸b固定的問題在xAxis
的寬度上。
這裏是我的解決方案:
/**
* Automatically calculate the step size based on the width of the container.
* 1. Find the width of the xAxis
* 2. Get the width of the label, which in our case is 80px.
* 3. Find the no of labels that can be displayed on the xAxis.
* 4. Find the max no of labels by iterating through all the xAxis.
* 5. To find the final step size by dividing value from step 4/step 3.
*
* @returns {number}
* @private
*/
_getLabelStep: function() {
var xAxisWidth, labelWidth, labelsToDisplay, noOfTicks, step;
xAxisWidth = this._getXAxisWidth();
labelWidth = this.AXIS_LABEL_WIDTH;
labelsToDisplay = Math.floor(xAxisWidth/labelWidth);
noOfTicks = this._getMaxNoOfTicks();
step = Math.floor(noOfTicks/labelsToDisplay);
return isNaN(step) ? 0 : step;
},
/**
* Iterate through all the xAxis' and find the max no of ticks (labels)'.
* @returns {number}
* @private
*/
_getMaxNoOfTicks : function() {
var i ,maxNoOfTicks =0 ;
if(this.chart && this.chart.xAxis){
for(i=0 ; i<this.chart.xAxis.length ; i ++){
if(this.chart.xAxis[i].dataMax && this.chart.xAxis[i].dataMax > maxNoOfTicks){
maxNoOfTicks = this.chart.xAxis[i].dataMax;
}
}
}
return maxNoOfTicks;
},
/**
* returns the width of the xAxis.
* @private
*/
_getXAxisWidth : function() {
if(this.chart && this.chart.xAxis && this.chart.xAxis.length>0){
return this.chart.xAxis[0].len;
}
}
調用函數_getLabelStep
並設置標籤step
大小。
labels:{step : this._getLabelStep()} style:{width : 80px}
爲了能夠計算基於xAxis
容器上的step
大小,我們必須要有定義的標籤寬度。 i.w 80px
在我的情況。
staggerLines怎麼樣? http://jsfiddle.net/a8g87gm8/15/ –
謝謝。設置「step」或「staggerLines」的值可以解決問題,但它必須是動態的(由Highcharts負責)。如果我們看看我的** Highcahrts-4 **演示,它實際上是動態地設置'staggerLines'。 –
我想你可能在這裏運氣不好。當他們添加到自動旋轉中時,他們將自動錯開的線條從版本4.1(12/2015)中的代碼中移出。 –