УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

Построение графика из произвольных данных


Автор Сообщение
Сообщение создано: 01. 04. 2016 [17:48]
legend
Oleg N
Создатель темы
Зарегистрирован(а) с: 13.04.2012
Сообщения: 63
Приветствую всех пользователей OpenScada.

Помогите разобраться. Стоит задача вывести на элемент построения диаграмм/трендов (Diagram) графики с произвольными данными. График должен быть построен по точкам.
Например: X:Y; 15:00-80% 16:22-70% 16:25-75% 16:40-70% 17:03-85% (точки соединяются между собой прямыми).
Периодичность данных непостоянная.
Первый способ, который нашел на форуме и в документации - отрисовка из прямо установленных данных "data:{XMLNodeData}", приспособить его не получилось. Там обязательно указывается периодичность данных.
Второй способ, попытка записать данные в архив значений, то же не подошел, так как архив так же должен обладать определенной периодичностью.

Вопрос, можно ли каким-то образом с помощью элемента диаграмма построить график по произвольным непериодичным точкам?
Сообщение создано: 01. 04. 2016 [18:30]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"legend" wrote:

Помогите разобраться. Стоит задача вывести на элемент построения диаграмм/трендов (Diagram) графики с произвольными данными. График должен быть построен по точкам.
Например: X:Y; 15:00-80% 16:22-70% 16:25-75% 16:40-70% 17:03-85% (точки соединяются между собой прямыми).
Периодичность данных непостоянная.
Первый способ, который нашел на форуме и в документации - отрисовка из прямо установленных данных "data:{XMLNodeData}", приспособить его не получилось. Там обязательно указывается периодичность данных.

И что?
Просто абстрагируйтесь от периодичности и времени и указывайте ему время от 0 через 1 (секунду). Всё-равно на XY визуально время никак не представлено.

Learn, learn and learn better than work, work and work.
Сообщение создано: 01. 04. 2016 [18:59]
legend
Oleg N
Создатель темы
Зарегистрирован(а) с: 13.04.2012
Сообщения: 63
"roman" wrote:

И что?
Просто абстрагируйтесь от периодичности и времени и указывайте ему время от 0 через 1 (секунду). Всё-равно на XY визуально время никак не представлено.

Проблема вся в том, что в проекте используется виджет "Группа графиков", на котором отображено несколько параметров. На тот же график нужно добавить 5-й параметр из произвольных данных.
Абстрагироваться я могу и легко. Указать в data:{XMLNodeData} "tm" и "tm_grnd", но точки не соединяются между собой прямыми, а рисуется статическое неизменное значение весь период времени до следующей точки.

Прикрепил скриншот вот такого примера: data:<d s="1" tm="1459524990" tm_grnd="1459524790" per="1">0 40 20 50 40 55 50 50</d>
Желтая линия, то что получается в результате обработки.
Зеленая линия то, что хочется получить на этом графике.

Может быть можно каким-то другим способом получить подобный график?
Вложенный файл

graf.PNG (Тип файла: image/png, Размер: 110.89 килобайт) — 1775 загрузок
Сообщение создано: 03. 04. 2016 [16:03]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"legend" wrote:

Проблема вся в том, что в проекте используется виджет "Группа графиков", на котором отображено несколько параметров. На тот же график нужно добавить 5-й параметр из произвольных данных.
Абстрагироваться я могу и легко. Указать в data:{XMLNodeData} "tm" и "tm_grnd", но точки не соединяются между собой прямыми, а рисуется статическое неизменное значение весь период времени до следующей точки.

Правильно, потому-что data:{XMLNodeData} это внутренний формат и разрыв между точками означает упаковку, т.е. предыдущая точка повторяется для всех по периодичности. Однако добавил опцию "aprox" для аппроксимации таких переходов, при указании вручную.

Learn, learn and learn better than work, work and work.
Сообщение создано: 03. 04. 2016 [16:27]
legend
Oleg N
Создатель темы
Зарегистрирован(а) с: 13.04.2012
Сообщения: 63
"roman" wrote:

Однако добавил опцию "aprox" для аппроксимации таких переходов, при указании вручную.

Супер, спасибо! Завтра буду пробовать.
Если я правильно понял, то изменения находятся в последней рабочей сборке r2343.
В опциях data нужно указать aprox="1".
Сообщение создано: 04. 04. 2016 [17:09]
legend
Oleg N
Создатель темы
Зарегистрирован(а) с: 13.04.2012
Сообщения: 63
Обновил программу через apt-get из deb ftp://ftp.oscada.org/OpenSCADA/Work/Debian/7 ./
Создал тестовый пример, согласно измененной документации. Получил, то что видно на прикрепленном изображении.
Функция построения графиков из произвольных данных перестала работать совсем.
Выводит на график просто линию, независимо от того, есть aprox или нет. Ведет себя, как элемент line только с ограниченным периодом.
Вложенный файл

test.jpg (Тип файла: image/jpeg, Размер: 966.9 килобайт) — 1864 загрузок
Сообщение создано: 04. 04. 2016 [17:16]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"legend" wrote:

Функция построения графиков из произвольных данных перестала работать совсем.
Выводит на график просто линию, независимо от того, есть aprox или нет. Ведет себя, как элемент line только с ограниченным периодом.

Не судьба!
У меня всё работает, а без "aprox" там как обычно, код смотрите если сомневаетесь!

Learn, learn and learn better than work, work and work.
Сообщение создано: 04. 04. 2016 [18:46]
legend
Oleg N
Создатель темы
Зарегистрирован(а) с: 13.04.2012
Сообщения: 63
"roman" wrote:

Не судьба!
У меня всё работает, а без "aprox" там как обычно, код смотрите если сомневаетесь!

Все заработало после удаления старых файлов проекта AGLKS из /home/user/.openscada. Результат прикрепил (рис.1).
Функция aprox заработала. Спасибо, то что нужно для построения графиков по точкам.
JAVASCRIPT
data:<d s="1" aprox="1" tm="1369465809" tm_grnd="1369465200" per="60">
0 3
1 6
2 4
3 5
4 10
5 8
</d>


Но после того, как я создал второй график и удалил из его параметров функцию aprox, график остался тем же самым. На этот раз удаление директории AGLKS из home не помогает. :)
Такое впечатление, что программа почему-то не обновляет данные из data после внесения в него последующих изменений. Перед тем как такое получилось удалял и изменял параметры s, aprox, per, чтобы посмотреть как поведет себя график.
Вложенный файл

рис.1.PNG (Тип файла: image/png, Размер: 178.65 килобайт) — 1702 загрузок
рис.2.PNG (Тип файла: image/png, Размер: 208.71 килобайт) — 1698 загрузок
Сообщение создано: 04. 04. 2016 [20:26]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"legend" wrote:

Но после того, как я создал второй график и удалил из его параметров функцию aprox, график остался тем же самым. На этот раз удаление директории AGLKS из home не помогает. :)
Такое впечатление, что программа почему-то не обновляет данные из data после внесения в него последующих изменений. Перед тем как такое получилось удалял и изменял параметры s, aprox, per, чтобы посмотреть как поведет себя график.

У меня всегда обновляет!

Learn, learn and learn better than work, work and work.
Сообщение создано: 04. 04. 2016 [20:30]
legend
Oleg N
Создатель темы
Зарегистрирован(а) с: 13.04.2012
Сообщения: 63
"roman" wrote:

У меня всегда обновляет!

Я понял, спасибо. Буду дальше пробовать.

С поставленной задачей теперь я наверное справлюсь. Осталось только deb пакеты под raspberry pi собрать.
А можно в будущем такую же функцию добавить для построения графиков из архивов?
И еще мне кажется, что для более легкого восприятия списка точек можно добавить разделители, как допустив в JSON файлах. Например, так: { 0:3, 1:6, 2:4, 3:5, 4:10, 5:8 }.
Но это всего лишь предложения по оптимизации данной функции, не более того.

[Сообщение редактировалось 1 раз(а), в последний раз 04.04.2016 в 20:31.]



5027