2016-03-01 2 views
1

Я использую Highcharts для некоторых графиков, в частности, Spline with plot bands. Связанный jsfiddle можно найти here.Highcharts xAxis

$(function() { 
$('#container').highcharts({ 
    chart: { 
     type: 'spline' 
    }, 
    title: { 
     text: 'Wind speed during two days' 
    }, 
    subtitle: { 
     text: 'May 31 and and June 1, 2015 at two locations in Vik i Sogn, Norway' 
    }, 
    xAxis: { 
     type: 'datetime', 
     labels: { 
      overflow: 'justify' 
     } 
    }, 
    yAxis: { 
     title: { 
      text: 'Wind speed (m/s)' 
     }, 
     minorGridLineWidth: 0, 
     gridLineWidth: 0, 
     alternateGridColor: null, 
     plotBands: [{ // Light air 
      from: 0.3, 
      to: 1.5, 
      color: 'rgba(68, 170, 213, 0.1)', 
      label: { 
       text: 'Light air', 
       style: { 
        color: '#606060' 
       } 
      } 
     }, { // Light breeze 
      from: 1.5, 
      to: 3.3, 
      color: 'rgba(0, 0, 0, 0)', 
      label: { 
       text: 'Light breeze', 
       style: { 
        color: '#606060' 
       } 
      } 
     }, { // Gentle breeze 
      from: 3.3, 
      to: 5.5, 
      color: 'rgba(68, 170, 213, 0.1)', 
      label: { 
       text: 'Gentle breeze', 
       style: { 
        color: '#606060' 
       } 
      } 
     }, { // Moderate breeze 
      from: 5.5, 
      to: 8, 
      color: 'rgba(0, 0, 0, 0)', 
      label: { 
       text: 'Moderate breeze', 
       style: { 
        color: '#606060' 
       } 
      } 
     }, { // Fresh breeze 
      from: 8, 
      to: 11, 
      color: 'rgba(68, 170, 213, 0.1)', 
      label: { 
       text: 'Fresh breeze', 
       style: { 
        color: '#606060' 
       } 
      } 
     }, { // Strong breeze 
      from: 11, 
      to: 14, 
      color: 'rgba(0, 0, 0, 0)', 
      label: { 
       text: 'Strong breeze', 
       style: { 
        color: '#606060' 
       } 
      } 
     }, { // High wind 
      from: 14, 
      to: 15, 
      color: 'rgba(68, 170, 213, 0.1)', 
      label: { 
       text: 'High wind', 
       style: { 
        color: '#606060' 
       } 
      } 
     }] 
    }, 
    tooltip: { 
     valueSuffix: ' m/s' 
    }, 
    plotOptions: { 
     spline: { 
      lineWidth: 4, 
      states: { 
       hover: { 
        lineWidth: 5 
       } 
      }, 
      marker: { 
       enabled: false 
      }, 
      pointInterval: 3600000, // one hour 
      pointStart: Date.UTC(2015, 4, 31, 0, 0, 0) 
     } 
    }, 
    series: [{ 
     name: 'Hestavollane', 
     data: [0.2, 0.8, 0.8, 0.8, 1, 1.3, 1.5, 2.9, 1.9, 2.6, 1.6, 3, 4, 3.6, 4.5, 4.2, 4.5, 4.5, 4, 3.1, 2.7, 4, 2.7, 2.3, 2.3, 4.1, 7.7, 7.1, 5.6, 6.1, 5.8, 8.6, 7.2, 9, 10.9, 11.5, 11.6, 11.1, 12, 12.3, 10.7, 9.4, 9.8, 9.6, 9.8, 9.5, 8.5, 7.4, 7.6] 

    }, { 
     name: 'Vik', 
     data: [0, 0, 0.6, 0.9, 0.8, 0.2, 0, 0, 0, 0.1, 0.6, 0.7, 0.8, 0.6, 0.2, 0, 0.1, 0.3, 0.3, 0, 0.1, 0, 0, 0, 0.2, 0.1, 0, 0.3, 0, 0.1, 0.2, 0.1, 0.3, 0.3, 0, 3.1, 3.1, 2.5, 1.5, 1.9, 2.1, 1, 2.3, 1.9, 1.2, 0.7, 1.3, 0.4, 0.3] 
    }], 
    navigation: { 
     menuItemStyle: { 
      fontSize: '10px' 
     } 
    } 
}); 

});

Мне нужна диаграмма, чтобы показать время не во времени - 50 минут (с интервалом в минуту). То есть, самая лучшая точка данных - это время = сейчас, а самое большее - время - 50 мин.

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

Данные даты у меня есть в миллисекундах (1456783080016000), но что является лучшим способом получить это в диаграмме, имея в виду, что эта диаграмма обновляется каждую минуту, как и xAxis.

Код, который я видел шоу вы можете обновить его следующим образом:

Highcharts.charts[0].xAxis[0].update({categories:['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']}, true); 

Как добавить дату даты в этом обновлении?

Моей второй частью этого вопроса является роль pointInterval & pointStart.

Я принимаю точкуInterval в одну минуту или (60000 мс) и точку pointStart: Math.abs(new Date().getTime() - 3000000), которая теперь минута 50 минут (3000000 мс).

Это, похоже, не работает, поэтому любой совет оценивается.

ответ

1

Я хотел бы использовать xAxis.tickPositioner и xAxis.labels.formatter, чтобы получить желаемый результат. Отрывок:

xAxis: { 
     type: 'datetime', 
     tickInterval: 600000, // get every 10th tick 
     tickPositioner: function (min, max) { 
      var ticks = [], 
       interval = this.tickInterval; 

      while (max >= min) { 
      ticks.push(max); 
      max -= interval; 
      } 
      return ticks.reverse(); 
     }, 
     labels: { 
      formatter: function() { 
      var max = this.axis.max, 
       diff = max - this.value; 

      if (diff === 0) { 
       return 'Now'; 
      } 
      return '-' + Highcharts.dateFormat('%M', diff) + 'mins';  
      } 
     } 
    }, 

И демо: http://jsfiddle.net/tdmjm9pn/1/

Позвольте мне знать, если что-то не понятно.

0

вы можете попробовать что-то похожее на следующее

$(function() { 
    $('#container').highcharts({ 
    xAxis: { 
     categories: [1373155200000, 1373241600000, 1373328000000, 1373414400000, 1373500800000, 1373587200000, 1373673600000, 1373760000000, 1373846400000, 1373932800000, 1374019200000, 1374105600000], 
     type: 'datetime', 
     labels: { 
     formatter: function() { 
      var d = new Date(this.value); 
      return d.toDateString(); 
     } 
     } 
    }, 

    series: [{ 
     data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] 
    }] 
    }); 
}); 

Fiddle link

+0

Проблема есть только придумал дату. Можно ли с этим справиться? или просто отображать время между изменениями даты? – DevilCode

+0

Вы спрашиваете что-то вроде этого http://jsfiddle.net/pandiyancool/7na7au4m/1/ –

+0

Да, но со временем и только с датой, если она изменится. – DevilCode

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