2013-07-19 4 views
0

У меня есть 15 минутный промежуток времени. Даты могут быть несовместимыми в моем случае.дата на графике в высоких диаграммах

Формат сэмплов: вар строка = [ "2012-02-29", "00:15", "0"]

Я получаю массив из класса Java для построения.

Я попробовал несколько вариантов, как:

var tempVal = new Array(); 

    for(var i=0;i<row.length;i++){ 

     var record = row[i].split(","); 
     tempVal[i]=Date.UTC(record[0].substring(0,4), record[0].substring(5,7), record[0].substring(8,10), record[1].substring(1,3), record[1].substring(4,7)), record[2]; 

} 

В Highcharts: серия: [{ данные: tempVal }]

Но я не смог построить это на Highcharts ,

Любое руководство было бы полезно.

ответ

1

Для построения даты на HighCharts вам необходимо указать значение даты и значение y. Это должно выглядеть примерно так:

data: [ 
       [Date.UTC(2010, 0, 1), 29.9], 
       [Date.UTC(2010, 2, 1), 71.5], 
       [Date.UTC(2010, 3, 1), 106.4] 
      ] 

Или ваш может заменить Date.UTC(2010, 0, 1) закачивается Javascript значение времени.

Date.UTC() может принимать несколько различных форматов. См. here.

Так что вам нужно сделать комбинацию значения даты и вашего значения времени в одно значение времени.

EDIT после просмотра кода вашего примера у вас есть пара вопросов. За один ваш массив данных tempVal объявлен неверным. Оно должно быть:

var tempVal = []; 

Вы также должны использовать array.push, чтобы получить данные в tempVal массив.

Другая проблема заключается в том, что ваш временной ряд не находится в хронологическом порядке - когда я правильно настроил вашу серию, я получил область «линия», идущую туда и обратно.

Все, что было сказано, что я придумал, это то, что вам нужно исправить объявление массива данных и то, как вы назначаете данные этому массиву. Это очень простой метод, и это, конечно, может быть быстрее, но мне нравится многословным:

for (var i = 0; i < row.length; i++) { 
    var record = row[i].split(","); 
    var xVal = Date.UTC(parseInt(record[0].substring(0, 4)), parseInt(record[0].substring(5, 7)), parseInt(record[0].substring(8, 10)), parseInt(record[1].substring(1, 3)), parseInt(record[1].substring(4, 7))); 
    var yVal = Math.random() * 10; 
    var x = [xVal, yVal]; 
    tempVal.push(x); 
} 

Смотрите обновленный пример here. Обратите внимание, что линии идут туда и обратно - как я сказал, это связано с тем, что временные ряды не находятся в хронологическом порядке. Также обратите внимание, что месяцы основаны на 0, поэтому Jan = 0 и Dec = 11.

+0

Спасибо, но я действительно пытался положить в дату и время в дате. UTC(), но все равно ничего не замышляет. Данные - 15-минутные интервальные данные, но даты могут быть непротиворечивыми. Просьба сообщить – user2599730

+0

о том, что «даты могут быть непротиворечивыми» не важны. Мы увидим немного больше кода или даже лучше представим jsFiddle, показывающий некоторые данные примера и проблему, с которой вы сталкиваетесь. – wergeld

+0

Я создал образец на http://jsfiddle.net/QcFW7/2/ – user2599730

0

У вас есть ошибки в консоли? Если у вас есть код, который вы отправили, у вас должен быть один.

Что касается Highcharts - требуется значений должны быть числами, а не строки, SOE, например: record[2] должны быть разобраны до, например: parseFloat(record[2])

+0

Пожалуйста, посмотрите на мой [вопрос здесь] (http://stackoverflow.com/questions/27983248/need-help-in-plotting-a-chart-using-highcharts -в-angularjs) – abi1964

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