2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Построение графиков через GnuPlot
Сообщение08.03.2021, 01:09 
Аватара пользователя


30/04/19
209
При построении графика через Gnuplot я использую записанные на винчестер данные после выполнения расчетов в сторонней программе. Т.е. программа считает - пишет в файл на винчестер - Gnuplot считывает с винчестера и строит график. Можно ли избежать записи на винчестер и сразу из программы передавать данные в Gnuplot?

 Профиль  
                  
 
 Re: Построение графиков через GnuPlot
Сообщение08.03.2021, 02:07 
Супермодератор
Аватара пользователя


09/05/12
24011
Кронштадт
Принципиально можно сделать это через перенаправление входного потока, но... зачем? В конце концов, даже при полном отсутствии диска куда проще сделать что-нибудь вроде tmpfs в памяти.

P.S. Сначала написал, потом осознал, что ОС вы не указали, а ответ сильно от этого зависит.

 Профиль  
                  
 
 Re: Построение графиков через GnuPlot
Сообщение08.03.2021, 03:25 
Аватара пользователя


30/04/19
209
Pphantom в сообщении #1508278 писал(а):
Сначала написал, потом осознал, что ОС вы не указали, а ответ сильно от этого зависит.

OS Linux, язык фортран.

 Профиль  
                  
 
 Re: Построение графиков через GnuPlot
Сообщение08.03.2021, 04:47 
Супермодератор
Аватара пользователя


09/05/12
24011
Кронштадт
Тогда и в самом деле делаете перенаправление вывода программы в gnuplot при вызове, после чего отправляете туда обычные команды с одной дополнительной деталью: когда надо будет собственно что-то нарисовать, нужно отправить в выходной поток команду вида
Код:
plot '-' ...
(вместо ... - обычные модификаторы команды), а потом отправлять данные. Признак окончания - закрытие потока (когда программа закончит выполняться) или пустая строка.

Иначе говоря, примерно такой код
Используется синтаксис Fortran
program gnuplotlink
  implicit none

  integer :: i

  write(*,*) "plot '-' w l"
  do i=0,100
    write(*,"(I3,X,F7.4)") i,sin(0.0628*i)
  end do

end program gnuplotlink
 

и последующий вызов (если это скомпилировать в a.out) вида
Код:
./a.out | gnuplot -persist
выдаст картинку с синусоидой. Ключ -persist нужен, чтобы окно gnuplot'а не закрылось сразу после выполнения, если организовать в нем вывод картинки в файл, то он не потребуется.

 Профиль  
                  
 
 Re: Построение графиков через GnuPlot
Сообщение08.03.2021, 05:07 
Аватара пользователя


30/04/19
209
Спасибо, получилось. А если нужно вывести график в файл? Как это сделать? Ведь файл *.plt все равно нужен, что бы сделать подписи к графику и т.п. или файл *.plt то же не обязателен и можно как то обойтись без него, организовав нужные подписи в коде программы?

 Профиль  
                  
 
 Re: Построение графиков через GnuPlot
Сообщение08.03.2021, 11:24 
Супермодератор
Аватара пользователя


09/05/12
24011
Кронштадт
Snegovik в сообщении #1508287 писал(а):
А если нужно вывести график в файл? Как это сделать?
А это уже делается средствами самого gnuplot'а. Что-нибудь вроде
Код:
set term png
set output "fig.png"
plot sin(x)
выведет картинку в файл fig.png.
Snegovik в сообщении #1508287 писал(а):
или файл *.plt то же не обязателен и можно как то обойтись без него, организовав нужные подписи в коде программы?
Да, конечно. Все, что будет выводить программа, при перенаправлении потока попадет на вход gnuplot'у, так что так можно задать любые команды.

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

 Профиль  
                  
 
 Re: Построение графиков через GnuPlot
Сообщение08.03.2021, 11:41 
Аватара пользователя


30/04/19
209
Ясно, спасибо. Выходит у меня и так все неплохо сделано, программа пишет в файл, из программы же вызывается gnuplot уже на построение графика с записью в файл. Но вариант когда нужно вывести картинку на экран, который Вы описали, все равно пригодится. :D

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group