Highcharts x系列组

时间:2016-04-13 18:27:03

标签: highcharts

帮助我们。我有6个月间隔的大量数据。我如何用Xoth间隔在X中对它进行分组?

$(function () {
    $('#container').highcharts({
        xAxis: {
            type: 'datetime'
        },
        plotOptions: {
            spline: {
                marker:{
                    enabled: false
                }
            }
        },
        series: [{
            type: 'spline',
            data: [
                [Date.UTC(2010, 0, 1), 29.9],
                [Date.UTC(2010, 0, 3), 29.9],
                [Date.UTC(2010, 0, 10), 29.9],
                [Date.UTC(2010, 1, 1), 71.5],
                [Date.UTC(2010, 1, 5), 29.9],
                [Date.UTC(2010, 2, 1), 106.4]
            ]
        }]
    });
});

https://jsfiddle.net/L2g2uzz3/3/ 例如,我想在X ax

中收到1月,2月和3月的标签

1 个答案:

答案 0 :(得分:1)

我知道您希望在xAxis中显示每个数据的月份名称。

由于您只想显示月份并且同月有很多数据,因此您必须使用Highcharts API的2个属性: formatter &的 tickPositioner

  • formatter :想要格式化数据时使用此功能。在这里,您希望显示名称而不是timeValue more info
  • tickPositioner :使用它来设置 tick (轴上的标签位置)。在我们的例子中,我们可能有多个刻度和相同的标签,所以我们必须过滤它们。请参阅FIDDLE
  • 的Highcharts文档

在xAxis的label属性中,添加:

labels:{
              formatter: function(){
                        return monthNames[new Date(this.value).getMonth()];
                       }    
                  },
            tickPositioner: function () {
                var positions = [];
                var month = [];
                for(var i = 0; i < this.series[0].xData.length; i++){
                        if(month.indexOf(new Date(this.series[0].xData[i]).getMonth()) == -1){
                                positions.push(this.series[0].xData[i]);
                        month.push(new Date(this.series[0].xData[i]).getMonth());
                        }
                }
                return positions;
            }
        },

另外不要忘记初始化monthNames数组

var monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];

您可以看到更新link you used in your question

让我知道它是否有用