Репутация gnuplot: «Размер сканирования матрицы равен нулю» - PullRequest
2 голосов
/ 26 апреля 2019

Я пытаюсь (часто, например, каждые 0,01 с) реполировать двумерный набор данных в gnuplot, генерируя небольшой (например, 10x10) двумерный массив пустышек в python и сохраняя его в файл.

Запускследующее работает в течение нескольких секунд, а затем gnuplot останавливается с ошибкой «Размер сканирования матрицы равен нулю».

gnuplot > plot 'testfile.out' matrix w image
gnuplot > while(1) {replot; pause 0.01;}

Как я могу заставить gnuplot проигнорировать это и продолжить реплотирование файла данных?


Редактировать: Приведенный ниже метод отлично работает для случайного числагенератор, но когда я применяю его к моему фактическому файлу, то же самое происходит с "размером сканирования матрицы ноль".Возможно, это проблема с Python, а не с gnuplot?Если быть точным, я запускаю setup-and-plot.gp из ответа ниже:

    set term wxt noraise
    plot '<flock testfile.out cat testfile.out' matrix w image
    while(1) { pause 0.01; replot; }

, а затем следующий код Python:

    import time
    import numpy as np

    while True:
        # in actual code array is not random, this is just to debug.
        arr = np.random.rand(10,10)
        np.savetxt('testfile.out', arr)
        time.sleep(.01)

Через несколько секунд (в зависимости от того, как долго яустановите время ожидания) оно снова останавливается с ошибкой «размер сканирования матрицы равен нулю».

1 Ответ

2 голосов
/ 26 апреля 2019

Не думаю, что вы можете.

Обходной путь - использовать блокировку файлов, например, ниже приведен пример использования сценария Gnuplot и генератора случайных чисел с использованием flock из пакета util-linux:

setup-and-plot.gp

set term wxt noraise
plot '<flock testfile.out cat testfile.out' matrix w image
while(1) { pause 0.01; replot; }

Генератор (протестирован с bash):

while sleep .01; do 
  flock testfile.out \
    sh -c "shuf -i 0-100 -n100 | xargs -n10 > testfile.out"
done

Запустить генератор на одной клеммеи gnuplot setup-and-plot.gp в другом.Убедитесь, что вы находитесь в одном каталоге.

...