2016-02-26 77 views
0

我在http://jsfiddle.net/w53woene/1/斜highcharts軸標籤與傳奇

我有這個問題歸結由基於對highcharts演示小小提琴四件事重疊:

1)我需要旋轉的標籤(此基於功能請求,所以我不能忽略它)。

labels: { 
    rotation: -45 
} 

2)最後一個標籤真的很長的事實。這是基於每個圖表所提供的數據,因此並非總是如此,但經常出現30%-40%的情況。

3)標籤不能用省略號包裝或縮短。

4)我需要添加圖表和圖例之間的間距,以適應標籤大小,但只有當標籤將會過長並與圖例發生碰撞時。

這似乎只發生在chart: { inverted: true },如果它沒有倒置傳說行爲正常,根據需要增加圖表的距離。

理想情況下,我想知道是否有一個特定的選項,我錯過了本地實現這一點,也就是說,我希望floating: false實現這一點,就像圖表沒有倒置時一樣,但它不會似乎沒有。如果這是不可能的,我想知道如何調整圖表大小(不包括圖例)以便通過JavaScript來實現。

回答

1

問題是垂直軸在左側尺寸上添加空間,但不會在底部添加空間。爲了更好的可讀性,我會包裝標籤:http://jsfiddle.net/w53woene/2/ - 否則可能會發生這樣的情況,即您將擁有如此長的標籤,以使得圖表獲得0像素的繪圖區域。

如果你真的需要非換行文本,然後我就換Axis.prototype. getOffset添加額外的空間:

(function(H) { 
    H.wrap(H.Axis.prototype, 'getOffset', function(p) { 
    p.call(this); 
    if (this.isXAxis) { 

     var lastTick = this.tickPositions[this.tickPositions.length - 1], 
     lastLabel = this.ticks[lastTick].label, 
     height = lastLabel.getBBox(true).height; 

     this.labelDiff = height - this.chart.marginBottom; 
     if (this.labelDiff > this.chart.axisOffset[2]) { 
     this.chart.axisOffset[2] = this.labelDiff; 
     } else { 
     this.labelDiff = 0; 
     } 
    } else { 
     this.offset -= this.chart.xAxis[0].labelDiff; 
    } 
    }); 
})(Highcharts) 

和現場演示:http://jsfiddle.net/vwegeuvy/