2015-04-23 54 views
-1

我需要有xAxis和yAxis从0到5的气泡图。如果我在xAxis或yAxis 5上有气泡,气泡会被切割。Highchart泡沫与最大x/y轴线隔绝

$(function() { 
    $('#container').highcharts({ 

     chart: { 
      type: 'bubble', 
      zoomType: 'xy', 
      height: 500, 
      width: 500, 
     }, 
     title: { 
      text: 'Highcharts Bubbles' 
     }, 
     yAxis: { 
      min: 0, 
      max: 5, 
      gridLineWidth: 1, 
     }, 
     xAxis: { 
      min: 0, 
      max: 5, 
      gridLineWidth: 1, 
     }, 
     series: [{ 
      data: [[5, 4, 2], [3, 1, 1], [4, 2, 3], [1, 2, 3], [1, 4, 1], [2, 5, 1], [5, 2, 3], [3, 2, 1]] 
     }] 
    }); 
}); 

http://jsfiddle.net/tum3zzzu/1/

我莫名其妙地发现了一个招用做最大:5.5,但它仅适用于x轴的工作。 On yAxis max:5.5被四舍五入为6.

我该如何解决这个问题?

+0

如果我把endOnTick:false;和最大值:5.5;它以某种方式使工作,但它仍然不完美,因为我们看到网格线超过5. http://jsfiddle.net/tum3zzzu/2/ – Alexandre

+0

而不是最大,你可以使用[maxPadding](http://api.highcharts。 com/highcharts#yAxis.maxPadding),那么你就避免了静态值。 –

+0

@SebastianBochan我需要使用max来显示轴直到5,即使没有气泡的X或Y为5。 – Alexandre

回答

1

您可以使用tickPositioner告诉图表确切地显示为滴答。我还用showLastLabel: false隐藏最后一个勾号(5.5)。您可以在代码中执行以下操作:

yAxis: { 
    min: 0, 
    max: 5.5, 
    endOnTick: true, 
    showLastLabel: false,  // to hide 5.5 
    gridLineWidth: 1, 
    tickPositioner: function() { 

     var positions = [0],  // to start from 0 
      tick = Math.floor(this.dataMin), 
      increment = Math.ceil((this.dataMax - this.dataMin)/6); 

     for (tick; tick - increment < this.dataMax; tick += increment) { 
      positions.push(tick); 
     } 

     positions.push(this.dataMax + 0.5); // to add the last label 5.5 

     return positions; 
    } 
} 

而这里是DEMO

+0

@Alexandre是否可以工作? –

+0

为showLastLabel +1。但是,我没有看到你的代码其余部分的目的!最大值:5.5,endOnTick:true就足够了。但实际上,最好的方法是获得像填充一样的东西,并使坐标轴真的从0到5. – Alexandre

+0

下面是如果删除** tickPositioner **函数时的样子:http://jsfiddle.net/tum3zzzu/9/yAxis变为6,xAxis变为5.5,图表不再是方形,它是一个矩形。 –