2015-05-13 3 views

ответ

3

Вы можете использовать функцию xAxis.labels.formatter, чтобы точно определить, что вы хотите, чтобы показать, как XAxis этикетки:

labels: { 
    formatter: function() { 
     var date = new Date(this.value); 
     var month = date.toDateString().substring(4,7); 
     var day = date.getDate(); 

     if(this.isFirst || day == 1) 
      return day + '. ' + month; 

     return day; 
    } 
} 

Вот DEMO.

EDIT:

И если ваш первый день каждого месяца начинается не с 1, вы можете изменить свой код так:

labels: { 
    formatter: function() { 
     var dateArray = this.axis.series[0].xData; 
     var previousDate = new Date(dateArray[dateArray.indexOf(this.value) - 1]); 
     var date = new Date(this.value); 
     var month = date.toDateString().substring(4,7); 
     var previousMonth = previousDate.toDateString().substring(4,7); 
     var day = date.getDate(); 

     if(this.isFirst || (previousMonth != month)) 
      return day + '. ' + month; 

     return day; 
    } 
} 

Таким образом, вы можете проверить предыдущий пункт, и если их месяц не совпал, вы можете вернуться день и месяц. Еще один день. Вот DEMO.

+0

Большое спасибо Raeen – Hary

+0

Как бы это сделать, если у меня есть случайное число дней в xaxis, которое всегда начинается с 1? – Hary

+0

@Hary Проверьте изменения, пожалуйста. Измените свои данные и убедитесь, что они работают со случайными днями. –

Смежные вопросы