Ускорение апплета визуализации тире - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно визуализировать данные датчика с помощью следующих характеристик данных:

  • Детализация данных в секунду (данные за 12-25 дней), индекс отметки времени
  • Около 20 каналовс различными масштабами
  • Около 50 наборов данных с вышеуказанными функциями, каждый будет иметь свой собственный график

График должен быть масштабируемым до области журнала / канала, где я хочу исследовать,гранулярность должна быть в секунду, автоматически масштабироваться, и я должен иметь возможность выбирать / отменять выбор каналов.Благодаря сюжету это было легко сделать, как показано ниже в примере кода 1 ниже.Однако это слишком медленно, потому что набор данных слишком велик.

  1. Есть ли функция, которую я могу использовать для ограничения объема первоначально нанесенных данных, скажем, график загружается только с одним часом данных.И затем есть интерактивный ввод диапазона, где я могу ввести индексный диапазон для построения графика (всякий раз, когда я открываю график)?Или используйте кнопку next hour and day.
  2. В этом примере plotly + datashader в какой части кода можно контролировать гранулярность?Этот пример идеально подходит для моих нужд, он очень быстрый, но он теряет данные представления в секунду при визуализации.До этого я не использовал xarrays и tf.shade.Если есть способ построить данные, как в этом методе.Это будет идеально, потому что этот график предназначен для 100 миллионов точек , в то время как мои данные будут максимум около 20 миллионов точек (и мне даже все это не нужно сразу).Я смог вставить свои массивы в этот график, и он отлично работал.
  3. Есть ли приложение с открытым исходным кодом, которое может обработать этот запрос, табло общедоступно медленно и имеет плохую функцию масштабирования.

Sample1

import plotly
import plotly.plotly as py
import plotly.graph_objs as go
#df = case_1

traceC1 = go.Scatter(
    x=random_x,
    y=case_1["channel1"],
    mode='lines+markers',
    name="channel1",
    hoverinfo='y',
    line=dict(
        shape='vhv'
    )
)

traceC3 = go.Scatter(
    x=random_x,
    y=case_1["channel3"],
    mode='lines+markers',
    name="channel3",
    hoverinfo='y',
    line=dict(
        shape='vhv'
    )
)

#And more traces in similar fashion.

fig_case1 = tools.make_subplots(rows=3, cols=1)
fig_case1.append_trace(traceC1, 1, 1)
fig_case1.append_trace(traceC3, 2, 1)

fig_case1['layout'].update(height=1300, width=1950)
plotly.offline.plot(fig_case1,auto_open=False, filename='case_1.html')
...