Команда перечитать делает искаженную анимацию в gnuplot - PullRequest
1 голос
/ 06 апреля 2020

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

 set pm3d map
 set xrange[  -6.0000000000000000      :   6.0000000000000000      ]
 set yrange[  -6.0000000000000000      :   6.0000000000000000      ]
 sp'fpf.dat'u 1:2:3 w pm3d
 pause 0.1
 reread

Но при запуске программы полученная анимация искажается. sudden white parts

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

1 Ответ

3 голосов
/ 06 апреля 2020

Во-первых, я предлагаю не использовать reread, а вместо этого создать al oop, чтобы иметь больше контроля над ним.

set pm3d
set view map
while (some-condition) {
  sp'fpf.dat'u 1:2:3 w pm3d
  pause 0.1
}

Теперь на ум приходит несколько вариантов

1) Программа, которая создает данные, могла бы перезаписывать предыдущие данные вместо того, чтобы каждый раз создавать (или обрезать) файл.

2) Вместо того, чтобы помещать gnuplot в al oop на основе обновления каждого десятого секунды, используйте явную синхронизацию между созданием файла данных и последующим графиком. Есть много способов сделать это в зависимости от вашей среды и вашего контроля над соответствующими программами. Например, вы можете заменить оператор pause вторым l oop, который вращается до тех пор, пока не изменится время изменения файла данных (конкретные доступные команды c зависят от вашей ОС и оболочки)

oldtime = timestamp
while (timestamp == oldtime) {
    timestamp = system( "stat --format=%X file.dat" )
    pause 0.1
}
# we exited the previous loop because the file timestamp changed

3 ) Вы можете попробовать использовать режим мультиплотинга (set multiplot перед началом l oop), чтобы каждый новый график рисовался поверх предыдущего графика, а не заменял его. Если ваш диагноз верен, то, что белые участки связаны с неполными данными, вместо пустой области вы увидите содержимое предыдущего графика.

...