Как установить интервал в 30 секунд для даты и времени по оси y для highcharts JS

#javascript #angular #highcharts #ecmascript-6

#javascript #angular #highcharts #ecmascript-6

Вопрос:

У меня есть график, ось y на графике должна показывать минуты с разбивкой на 30 секунд. Я должен отображать ось y как 2:00, 2:30 … 5:30. Данные, которые я получаю от сервиса, указаны в секундах.

Я хотел бы добавить время по оси y и указать график в соответствии с данными.

Я нашел пример, в котором есть часы и минуты, однако я не могу изменить их на минуты и секунды с желаемыми значениями

 $(function () {
$('#container').highcharts({
    chart: {
        type: 'column'
    },
    xAxis: {
        categories: [
            'Jan',
            'Feb',
            'Mar',
            'Apr',
            'May',
            'Jun',
            'Jul',
            'Aug',
            'Sep',
            'Oct',
            'Nov',
            'Dec']
    },
    yAxis: {
        title: {
            text: 'Time (hh:mm)'
        },
        labels: {
            formatter: function () {
                var time = this.value;
                var hours1=parseInt(time/3600000);
                var mins1=parseInt((parseInt(time%3600000))/60000);
                return hours1   ':'   mins1;
            }
        }
    },
    plotOptions: {
        column: {
            pointPadding: 0.2,
            borderWidth: 0
        }
    },
    series: [{
        name: 'Tokyo',
        data: [0, 0, 0, 0, 76320000, 25920000, 102840000, 0, 0, 0, 0, 0]

    }]
});
});
  

Пример

Я хочу, чтобы ось y выглядела как показано на рисунке ниже

введите описание изображения здесь

Комментарии:

1. Привет @User123, не могли бы вы описать связь между метками и значениями данных? Если значения являются временными метками, диаграмма будет выглядеть следующим образом: jsfiddle.net/BlackLabel/7gj3fqah

2. Я хотел бы установить временные метки от 2 минут до 5 минут с шагом в 30 секунд? Как я добавил на скриншоте. Пожалуйста, помогите.

3. Привет @User123, Да, я знаю, но разница между самым высоким и самым низким значением в ваших данных составляет более 2 минут 30 секунд.

4. @ppotaczek : извините за это, я только что ввел некоторые жестко заданные значения, я их изменю.

Ответ №1:

Запустил пример с некоторыми простыми данными, чтобы вы могли видеть, как отражаются результаты… Ключевым моментом было использование tickInterval … после этого нам просто нужно было отформатировать время, чтобы оно выглядело как time (с двоеточием), вместо больших чисел, обозначающих секунды.

вы можете ознакомиться с полным рабочим фрагментом ниже:

 $(function() {
  $('#container').highcharts({
    chart: {
      type: 'column'
    },
    xAxis: {
      categories: [
        'Jan',
        'Feb',
        'Mar',
        'Apr',
        'May',
        'Jun',
        'Jul',
        'Aug',
        'Sep',
        'Oct',
        'Nov',
        'Dec'
      ]
    },
    yAxis: {
      title: {
        text: 'Time (hh:mm:ss)'
      },
      tickInterval: 30,

      labels: {
        formatter: function() {
          var time = this.value;
          var mins = parseInt(time / 60);
          var secs = time % 60;
          if (secs == 0) {
            return mins   ':00';
          } else {
            return mins   ':'   secs;
          }
        }
      }
    },
    plotOptions: {
      column: {
        pointPadding: 0.2,
        borderWidth: 0
      }
    },
    series: [{
      name: 'Tokyo',
      data: [30, 60, 120, 45, 240, 360, 280, 45, 90, 180, 270, 0]

    }]
  });
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>  

Комментарии:

1. Я хочу, чтобы минуты на моей оси y начинались с 2: 00 до 5: 30 с интервалом в 30 секунд между ними. Не могли бы вы, пожалуйста, помочь мне в настройке этого?

2. В моем коде есть интервал в 30 секунд, как вы и хотели… Минимальные и максимальные значения на оси обновляются на основе данных… Вы хотите жестко ограничить их с 2:00 до 5:30?