gnuplot 用新的图替换旧的图

gnuplot 用新的图替换旧的图

我正在运行一个使用 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.datp.plt文件,例如使用的多数据集功能gnuplot

相关内容