Страница 1 из 1

Темперетурный лог и XY Graph

Добавлено: 04 июн 2018, 17:37
jane_wild
Ребята нужна помощь. Посмотрите на вложенный VI. Этот VI демонстрирует проблему, с которой я столкнулась. Устройство непрерывно передает данные температуры через каждые 18 секунд, затем делает перерыв в передаче на несколько часов, данные записываются в файл. Далее прочитав этот файл и получив 2D массив отображаю его на графике.... Вопрос как "разорвать" plot , что бы от не отображал данные, когда их небыло. В данном примере время между 6:28:05 PM и 3:13:23 AM. (индексы 350, 351 в массиве) Иначе глядя на график складывается ложное впечатление что температура линейно падала, хотя в реальности было совсем не так... Вот я и хочу что бы этот промежуток не отображался и красная линия на графике состояла из двух частей. Спасибо

Re: Темперетурный лог и XY Graph

Добавлено: 04 июн 2018, 17:55
Artem.spb
Можно вставить в место разрыва NAN
Можно разделить данные на два plot-а
xy.png
xy2.png

Re: Темперетурный лог и XY Graph

Добавлено: 04 июн 2018, 18:04
jane_wild
Так оно то понятно, что можно вставить NaN или разделить на два плота. Проблема в том что индекс каждый раз другой. Иногда даже бывают два разрыва, тут нужно что то другое... Может как нибудь из временной шкалы кусок вырезать... :haha: тогда и пусть себе график выглядит сплошным...

Re: Темперетурный лог и XY Graph

Добавлено: 04 июн 2018, 18:54
Alex Dem
jane_wild писал(а):Проблема в том что индекс каждый раз другой. Иногда даже бывают два разрыва
Так в этом и состоит Ваша задача, перед построением графика найти индексы для разрывов и далее придерживаться предложенной методики с NaN.
Разницу между секундами при передаче и часами паузы определить не сложно.

Re: Темперетурный лог и XY Graph

Добавлено: 04 июн 2018, 19:19
zxc_pavel
Находить и смещать разрывы влево - это просто
Делать постоянный X.Scale.Range.Increment (например 10) - чтобы вертикальные линии сетки не ползали
X.Scale.Visible - False
Ну и свою шкалу рисовать вместо нее :)

Re: Темперетурный лог и XY Graph

Добавлено: 05 июн 2018, 11:02
Artem.spb
Вы сами себе противоречите
jane_wild писал(а): :haha: тогда и пусть себе график выглядит сплошным...
Иначе глядя на график складывается ложное впечатление что температура линейно падала, хотя в реальности было совсем не так...
если вырезать кусок их шкалы, то пользователь скорее всего не заметит, что прошли часы и решит, что температура упала мгновенно.

И в чём проблема, сделать как уже сказано

Код: Выделить всё

if (x[i]-x[i-1]) < (пять-десять_стандартных_dt)
  {
    вставить в x[i] NAN
    вставить в y[i] NAN
  }

Re: Темперетурный лог и XY Graph

Добавлено: 05 июн 2018, 16:35
jane_wild
Ну да, ничего лучше не придумала, кроме как в лоб сравнивать время между соседними отсчетами. Поставила 6 минут (240 сек)
NaN.png
NaN.png (4.26 КБ) 2963 просмотра
Все работает, кстати достаточно одного NaN для временной шкалы.
Возник другой вопрос. Юзер желает знать какова мин. и макс. температура была на определенном отрезке времени. Для этого он делает zoom оси Х графика, возникает событие Scale Range Change, вызываю vi в котором мне необходимо вычислить эту температуру. Перебираю все данные, нахожу индексы мин и мах, обрезаю массив по этим индексам и затем нахожу мин/макс температуры. Оно то работает, но как то много телодвижений, есть ли более рациональный способ?
Temperature Min Max.png

Re: Темперетурный лог и XY Graph

Добавлено: 05 июн 2018, 17:41
Artem.spb
если метки времени точно растут, то искать проще с Threshold 1D Array