2013-03-21 3 views
0

У меня есть диаграмма, где у меня есть по оси x дата и время по оси y в секундах, например 10, 200 или 4500. Это отлично работает.Линейная диаграмма линейных диаграмм с отображением секунд и минут с осью y

Что мне нужно, так это поведение datetime, что, когда у вас есть диапазон дат, он показывает дни между этим диапазоном, но если диапазон очень мал, он отображает часы между этим диапазоном. Моя просьба состоит в том, что я хотел бы сделать то же самое, но иметь число в секундах, и если диапазон огромен, например, может быть от 100 до 2500, он должен быть преобразован в минуты, то, что у меня есть сейчас:

yAxis: { 
     title: { 
      text: 'Minutes', 
      margin: 10 
     }, 
     min: 0, 
     tickInterval: 60, 
     labels:{ 
      formatter: function(){ 
       var minutes = "" 
       if (this.value > 59){ 
        minutes = Highcharts.numberFormat((this.value/60), 0) 
       } 
       return minutes; 
      } 
     } 
    } 

, который отлично подходит для диапазона от 60 до 500, но когда диапазон длиннее, он рисует много строк, чтобы отображать минуты.

Любые идеи? Могу ли я изменить tickInterval в зависимости от некоторого значения?

Я уже видел этот ответ Plotting seconds, minutes and hours on the yAxis with Highcharts, но я не хочу обрабатывать объект datetime на этой оси.

ответ

0

Если бы вы могли, я бы рекомендовал использовать встроенный тип оси даты и времени. Это отнимает много хлопот с такими вещами, как вопрос, о котором вы просите.

В противном случае вы находитесь на правильном пути, глядя на tickInterval. Вы можете попробовать не указывать tickInterval вообще, и пусть выберете для вас диаграммы. Обычно он найдет что-то разумное.

Если это не подходит для вас, вам придется посмотреть на диапазон данных и самостоятельно выбрать разумный tickInterval. Один алгоритм можно использовать это:

if (range < 500) 
    tickInterval = 60 
else 
    tickInterval = 120 

Очевидно, что если ваш диапазон может пойти еще больше, возможно, потребуется еще один случай, который переключает tickInterval 300 или выше.

+0

Спасибо за информацию, я попробую ваши предложения – estemendoza

+0

Я в основном решил преобразовать данные секунд в минуты и добавить «minTickInterval» в 1, так что данные, имеющие меньше минуты, показаны, но диаграмма не показать ось ниже 1 – estemendoza

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