2017-02-16 8 views
1

Я пытаюсь построить несколько временных рядов на одной диаграмме с боке. Некоторые серии будут иметь разную длину, чем другие, но я хочу, чтобы они отображались.Bokeh «источник» с разными столбцами длина

На данный момент у меня есть предупреждение, указывающее, что весь столбец источника не имеет такой же длины, но Bokeh, кажется, автоматически регулирует размеры.

Другая важная вещь, мне нужно иметь все значения «Y» временного ряда в того же источника, поскольку я использую обратный вызов в JS для создания и интерактивного построения графика.

обратного вызова:

callback = CustomJS(args=dict(source=source), code=""" 
      // data contains the source.column_names keys 
      var data = source.get('data'); 
      // f contains the name of the time series to be plotted 
      var f = cb_obj.get('value'); 

      // For each key in the source, find the lines to be plotted 
      for (i = 0; i < Object.keys(data).length; i++) { 
       curr_key = Object.keys(data)[i]; 
       // 'line' identifier is used to recognise columns of sources which represent Y values 
       if (curr_key.includes('line')) { 
        id_ = curr_key.split('_')[0]; 
        associated_save = id_.concat('_save_y'); 
        // If the time series is in the selected to be plotted, set the data to plot it 
        if (f.indexOf(curr_key) > -1) { 
         data[curr_key] = data[associated_save] 
        } else { // else, fixe to nan to erase it 
         data[curr_key] = 'nan' 
        } 
       } 

      } 

      source.trigger('change'); 
     """) 

Алгоритм состоит в петле над COLUMN_NAMES источника для того, чтобы участок/или unplot соответствующего временного ряда.

Могу ли я предоставить список источников здесь args=dict(source=source)? следует ли игнорировать предупреждение, но мои ряды обрезаются или я должен обрабатывать его другим способом?

Участок работает довольно хорошо, но я стараюсь, чтобы удалить предупреждение ...

Спасибо!

ответ

1

я вижу в основном два варианта:

  • Resample ваши данные в одной и той же длины, но это, вероятно, не так легко сделать, и очень сильно зависит от свойств ваших данных. (Если возможна интерполяция или понижающая дискретизация и т. Д.)

  • Вы можете добавить несколько графиков линий() (или любых других) на одну фигуру. Это означает, что вы группируете свои данные в нескольких кадрах данных одинаковой длины. Тогда вашему Javascript потребуется немного рефакторинга. Вы можете перебирать рендереры, которые являются линиями, и там вы имеете ссылку на соответствующий источник. Или вы можете отключить средство визуализации в javascript (чтобы скрыть график)

+0

Я решил проблему с выборкой вниз для этого времени. Как вы упомянули, данные не всегда адаптированы для этого метода. О вашем втором варианте, мои знания JavaScript в этот момент не позволяют мне более сложные вещи. :) Но спасибо за этот ответ! – glihm

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