Построение графиков на Фортране с помощью gnuplot: методы и примеры кода

Чтобы построить графики с помощью gnuplot в программе на Фортране, вы можете использовать один из следующих методов:

Метод 1: использование системных вызовов
Вы можете использовать функцию системного вызова в Фортране для выполнения команд gnuplot из вашей программы на Фортране. Вот пример:

program gnuplot_example
    implicit none
    character(len=100) :: command
    ! Generate data
    ! ...
    ! Create gnuplot command
    command = 'gnuplot -persist'
    open(10, command=command, status='replace')
    ! Send gnuplot commands
    write(10, "('set term x11')")
    write(10, "('plot ''datafile.txt'' using 1:2 with lines')")
    ! Close gnuplot
    close(10)
end program gnuplot_example

Метод 2: использование канала
Другой подход — использовать канал для прямой связи с gnuplot. Вот пример:

program gnuplot_example
    implicit none
    character(len=100) :: command
    character(len=256) :: line
    integer :: status
    ! Generate data
    ! ...
    ! Open pipe to gnuplot
    command = 'gnuplot'
    open(10, file=command, status='old', action='write')
    ! Send gnuplot commands
    write(10, "('set term x11')")
    write(10, "('plot ''datafile.txt'' using 1:2 with lines')")
    ! Close pipe
    close(10, status=status)
    ! Check if gnuplot executed successfully
    if (status /= 0) then
        write(*, "('Error executing gnuplot')")
    end if
end program gnuplot_example

Метод 3: использование интерфейса gnuplot на Фортране.
Вы также можете использовать существующий интерфейс Фортрана для gnuplot, например «Модуль gnuplot на Фортране» (fpm) или «FortranGnuplotModule». Эти модули предоставляют дружественный к Фортрану интерфейс для взаимодействия с gnuplot. Вот пример использования модуля fpm:

program gnuplot_example
    use fpm_gnuplot
    implicit none
    ! Generate data
    ! ...
    ! Initialize gnuplot
    call gnuplot_init()
    ! Send gnuplot commands
    call gnuplot_cmd('set term x11')
    call gnuplot_cmd('plot ''datafile.txt'' using 1:2 with lines')
    ! Close gnuplot
    call gnuplot_close()
end program gnuplot_example