Highcharts X轴问题

时间:2014-01-30 02:34:14

标签: javascript highcharts

我已经google搜索并搜索了堆栈溢出很多,然后才决定在这里提出这个问题,因为虽然有些问题似乎相似,但没有一个解决方案适合我。

我对有时非常宽范围的数据进行了分类,例如1881 - 2012,并且想要动态计算并将此范围划分为x轴上的仅11个点,这是我有空间显示而没有启用缩放。如果数据来自1881年至2012年,我希望它例如希望它显示(不完全计算)从1881年,1901年,1921年,1941年......如果它是从1958年至2013年,然后是1958年,1968年,1978年....

xAxis: {
           categories: range(start_year,end_year),
           tickmarkPlacement: "on",
           tickInterval: Math.ceil(range(start_year,end_year).length/11), 
       },

.......

function range(start_year,end_year)
  {
    var years = [];

    for(var i = start_year;i<=end_year;i++)
    {
        years.push(i); 
    }
    return years;
  } 

这段代码的作用是跳过某些年份的标签,但仍会在图表上绘制点,导致x轴重叠年份。

任何关于此的线索都将受到高度赞赏。

这是说明我的困境http://jsfiddle.net/YUPzk/4/

的小提琴

2 个答案:

答案 0 :(得分:1)

您可以使用tickPositioner并准备自己的计算功能 下面的JavaScript是如何做到这一点的一个例子:
Highcharts.chart('container', { title: { text: 'Custom tick positions' }, subtitle: { text: 'through axis.tickPositions and axis.tickPositioner' }, xAxis: { tickPositions: [0, 1, 2, 4, 8] }, yAxis: { tickPositioner: function () { var positions = [], tick = Math.floor(this.dataMin), increment = Math.ceil((this.dataMax - this.dataMin) / 6); if (this.dataMax !== null && this.dataMin !== null) { for (tick; tick - increment <= this.dataMax; tick += increment) { positions.push(tick); } } return positions; } }, series: [{ data: [ [0, 1],[1, 3],[2, 2],[4, 4],[8, 3] ] }] });

The above demo code can be found at this jsfiddle

答案 1 :(得分:0)

对于其他任何努力完成这项工作的人来说,这就是你需要的东西,因为我做了大量的谷歌搜索,没有为遇到同样挑战的人找到答案

Highcharts ; x-axis scaling issue