我正在运行一个使用 gnuplot 绘图库的程序。我正在运行一个脚本,并希望实时查看结果图。
在 do 循环中,绘图命令会出现 100 次。因此,我获得了 100 个包含绘图的独立 gnuplot 窗口。
该程序就像
do i=1,100
...
...
call plota1(x,y)
end do
有什么方法可以让我不用得到这样的 100 个图,并且当第 (i+1) 个图出现时,它会出现在同一个 gnuplot 窗口中并取代第 i 个图?
使用的绘图子程序如下。
subroutine plota1(x,y)
real*8::x(:),y(:)
integer l,u,i
l=lbound(x(:),dim=1)
u=ubound(x(:),dim=1)
open(1,file="p.dat")
open(2,file="p.plt")
do i=l,u
write(1,*) x(i),y(i)
end do
write(2,*) "p 'p.dat' u 1:2 w l"
call execute_command_line('gnuplot -p p.plt')
close(1,status='delete')
close(2,status='delete')
end subroutine plota1
绘图命令来自行“write(2,*) "p 'p.dat' u 1:2 w l""。我应该在那里添加什么才能获得所需的输出?
答案1
问题不在于绘图命令,而在于每次调用时都会plot1a
启动一个新gnuplot
进程call execute_command_line('gnuplot -p p.plt')
。
为了在同一窗口中重新绘图(使用plot
命令或其缩写擦除先前的绘图p
,或使用 在先前的曲线之上绘图replot
),您必须有一个gnuplot
进程。如果您的脚本语言允许管道,这是可能的。
或者,您必须继续使用新的数据和绘图命令来扩展p.dat
和p.plt
文件,例如使用的多数据集功能gnuplot
。