Динамическое построение в Gnuplot (drawnow в MATLAB) - PullRequest
8 голосов
/ 17 февраля 2012

Можно ли создавать динамические графики в Gnuplot?Что мне нужно для моих целей, так это то, что, поскольку данные генерируются через некоторый цикл, я буду использовать gnuplot, чтобы поместить некоторый маркер на ось xy, сохраняя старые.Так что каким-то образом я смогу наблюдать за эволюцией данных, а не просто видеть конечный результат пакета.

То, что я особенно хочу, эквивалентно команде "drawnow" в MATLAB.

Хотя это и не полностью связано, сейчас я использую общий lisp для генерации данных в цикле и cgn для построения графика в lisp с использованием gnuplot.(Я могу отображать данные в виде пакета внутри общего lisp с помощью cgn, который использует gnuplot)

Заранее большое спасибо за ваше внимание.

edit: у меня есть написанный код в общем lispдля этого.Вы можете проверить это здесь:
Последовательное построение данных из emacs с использованием Common Lisp и Gnuplot
Однако этот поток носит более общий характер и запрашивает динамическое построение в gnuplot.Любые предложения приветствуются.

Ответы [ 2 ]

1 голос
/ 19 апреля 2012

К сожалению, в gnuplot нелегко построить отдельные точки, но, к счастью, есть несколько простых хаков, которые обсуждались здесь: Построение одной точки с помощью Gnuplot .Обсуждаемый здесь метод echo будет работать только в среде Unix.

Использование этого параметра с replot вместо plot в вашей программе должно дать вам график точек, эволюционирующих свремя, которое сохраняет предыдущие точки.

Другой способ, которым я пользуюсь в python, - это поместить точки данных в файл.На каждой итерации я добавляю точки в файл, затем строю график снова с помощью gnuplot.Это немного некрасиво, но в большинстве случаев делает работу.

0 голосов
/ 18 марта 2012

Я не уверен, что полностью понимаю, о чем вы спрашиваете, но если вы хотите добавить график к последней построенной вами строке (и вы используете gnuplot 4.4), то сработает следующее:

gnuplot> plot sin(x),cos(x)  #plot sin and cos in an xterm window
gnuplot> eval GPVAL_LAST_PLOT."cos(x+pi/2.5)"  #add cos(x+pi/2.5) to the current plot

В любом случае, я не уверен, что вы просите об этом, поскольку я не использую Matlab, но я надеюсь, что это так.

...