LINUX.ORG.RU

Присоветуйте, чем бы рисовать графики в режиме реального времени.

 ,


2

5

Собственное задачка проста, как 5 копеек. Нужно отрисовать простенький график, на котором будут отображены частоты возникновения различных событий. Тут подошел бы и GNU Plot. Но надо через каждую дельта Т «освежать» график. С GNU Plot это будет выглядеть не очень хорошо. Какие еще есть альтернативы?

Перекинуть через ZeroMQ например в R и рисовать.

psv1967 ★★★★★
()

Если используешь Qt - можно взять Qwt, см. пример отображения графика в реальном времени - oscilloscope.

XyAH
()

Например, можно решить эту задачу через Web - браузер отображает график на основе полученных через AJAX или websocket данных. Посмотри http://www.flotcharts.org/. WWW-сервер может быть встроенным в программу (например civetweb) или отдельным (например это может быть node.js)

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)

Почему через гнуплот плохо? Запускаешь параллельно процесс с гнуплотом и в пайп через дельту пихаешь свой график.

plotnikovanton
()

RRDTOOL, например в виде модуля для nginx. На страничке делать авторефреш. Но это хорошо подходит для временной серии.

vromanov ★★
()

А дельта-Т какого порядка? На сотни герц вполне пойдёт обычный SDL, там ничего сложного. Сглаживания, правда, нет, тупо пиксели, но если охота, то можешь задрочиться по imlib2 или cairo, или qt. Ещё есть allegro — зачётный фреймворк. Вот там уже есть сглаживание и рисование примитивов.

Если не так часто надо, то можно в SVG рисовать и рендерить через librsvg или браузер.

anonymous
()

Вот выдержка из моего скрипта на gnuplot:

set term x11 enh font ",12"
set ...

if(exists("GPVAL_DATA_X_MAX")) set xrange [GPVAL_DATA_X_MAX-7200:]
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set format x "%d.%m.%y\n%H:%M:%S"
set format y "%.2tE%+02T"
plot [][0:] "~/path/data.dat" u 1:6 w lines lw 2
pause 5
reread

anonymous
()
Ответ на: комментарий от XyAH

Qwt - простое и понятное api, богатый функционал. Для проектов на QtWidgets - самое то.

XyAH
()
Ответ на: комментарий от sigurd

Отличное решение! Серьезно, пока я не поставил проприетарные дрова на видяху, у меня огнелис с таким графиком «отъедал» половину процессора.

RiseOfDeath ★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Смотря для чего. Я его тоже использую, для простеньких чартов. Он хорош тем, что встраиваемый.

XyAH
()

реального времени

Это как? Если 60Hz - то OpenGL, если меньше - QPainter.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RiseOfDeath

Согласен, javascript - он такой, не очень легкий! Зато ресурсы отжираются только у клиента, у сервера-генератора данных нагрузки никакой. Хотя у меня сейчас на одном буке и клиент в браузере и сервер на nodejs работают без особых тормозов (видео - встроенный Intel). Тут скорее от потребности зависит - мне надо показывать графики на нескольких компьютерах, а источник данных - управляющий контроллер, который загружать отрисовкой картинок нежелательно.

sigurd ★★★★★
()

Qt + шейдеры. Тебе надо будет для каждого источника данных генерить двух компонентные mipmapы с max и min значения и прокрашивать на картинке все значения между ними

i36_zubov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.