Найти в Дзене

Создаем мультики в GNUplot

Не совсем это мультики, а всего лишь анимированные графики, но иногда для исследования процессов необходимо создать визуализацию данных. Есть несколько вариантов. В данной статье я рассмотрю вывод анимации в терминал wxt, а также GIF. Всё это довольно ресурсозатратные процессы, поэтому при обработке огромных массивов данных придётся терпеть.
Компьютер, на котором созданы анимации, приведенные в настоящей статье: ЦП: Intel Core I3 - 5010U 2.1 гГц два ядра, четыре потока. ОЗУ: 4 Гб. ОС Windows 7 Ultimate, которая сохранилась на этом компьютере ещё со времен покупки. для создания анимации я использовал следующие конструкции GNUplot: do for -- цикл, в котором задан диапазон строк файла данных; every -- указание GNUplot для использования диапазона строк файла данных; терминал wxt -- кроссплатформенная оболочка для показа графика, очень крутая штука, которая сильно облегчает работу; терминал gif -- он позволит заверстать нашу анимацию в небольшой ролик в формате GIF. Потом я напишу, как сде

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

Есть несколько вариантов. В данной статье я рассмотрю вывод анимации в терминал wxt, а также GIF.

Всё это довольно ресурсозатратные процессы, поэтому при обработке огромных массивов данных придётся терпеть.
Компьютер, на котором созданы анимации, приведенные в настоящей статье:

ЦП: Intel Core I3 - 5010U 2.1 гГц два ядра, четыре потока.

ОЗУ: 4 Гб.

ОС Windows 7 Ultimate, которая сохранилась на этом компьютере ещё со времен покупки.

для создания анимации я использовал следующие конструкции GNUplot:

do for -- цикл, в котором задан диапазон строк файла данных;

every -- указание GNUplot для использования диапазона строк файла данных;

терминал wxt -- кроссплатформенная оболочка для показа графика, очень крутая штука, которая сильно облегчает работу;

терминал gif -- он позволит заверстать нашу анимацию в небольшой ролик в формате GIF.

Потом я напишу, как сделать вывод в PNG для создания видеоролика.

Итак.

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

Почему я использовал GNUPLOT? Просто потому что на данный момент я не знаком с другими приложениями для этой работы. А также потому что GNUplot-ом я пользуюсь уже 10 лет со времен студенчества.

Итак, определим площадку для вывода данных и сразу запишем инструкции в файл данных.

set term gif animate optimize delay 10 size 1920,1080 - задаем терминал gif, анимированный, оптимизированный, задержка между кадрами 10 мс, размером 1920*1080. Этого на самом деле мало, но в условиях статьи достаточно;
set xrange [6050:7000] -- устанавливаем диапазон отображения линий на оси x;
set yrange [-3.6:3.6] -- устанавливаем диапазон отображения линий на левой оси y;
set y2range [-3600:3600] -- устанавливаем диапазон отображения линий на правой оси y;
set xtics 50 -- устанавливаем шаг по левой оси y 50;
set y2tics 100 -- устанавливаем шаг по правой оси y 100;
set output "1.gif" -- определяем, куда гнуплот будет сохранять гифку
do for[i=300000:474052]{ plot '1ch.txt' every ::300000::(i+1) using 1:2 with lines axis x1y1, '1ch.txt' every ::300000::(i+1) using 1:3 with lines axis x1y2, }

далее перебираем строки с номерами 300000-474052 и отдаем команду выводить линию из указанного диапазона с шагом 1 (конструкция every ::300000::(i+1) using 1:2).

Чтобы запустить сценарий нужно сохранить его с расширением *.gpl
если Gnuplot установлен в Windows, то достаточно дважды кликнуть мышкой по файлу сценария. Однако, в этом случае не будет видно, если вы совершили ошибку при создании сценария.
Я предпочитаю запускать его из командной строки Gnuplot (рисунок ниже)

Главное окно и командная строка GNUplot
Главное окно и командная строка GNUplot

Можно вводить команды с клавиатуры, можно пользоваться инструментами и меню для перехода в рабочую папку например. Затем достаточно ввести "load 'file.gpl'" и если ошибок нет, то GNUplot начнет работу.

После окончания работы сценария мы увидим готовый GIF файл.