gnuplot:在一个窗口中的各个绘图之间移动,就像图像查看器一样

gnuplot:在一个窗口中的各个绘图之间移动,就像图像查看器一样,gnuplot,Gnuplot,有没有办法有一个gnuplot窗口,然后在该窗口内循环前进到不同的绘图 更清楚一点,假设我想用这种方式绘制sin(x)、cos(x)和tan(x)。首先,会出现一个带有sin(x)的窗口,然后当我按某个键时,该窗口会显示cos(x),最后,在下一次击键时,它会显示tan(x) 我只能找到关于在同一窗口上同时显示多个绘图的信息。在我的例子中,我的数据是每天的,我有大约300天的时间来查看 这与在图像查看器中打开300个图像差不多。您只需点击“下一步”即可查看下一步。不过,我无法导出到图像,因为我需

有没有办法有一个gnuplot窗口,然后在该窗口内循环前进到不同的绘图

更清楚一点,假设我想用这种方式绘制sin(x)、cos(x)和tan(x)。首先,会出现一个带有sin(x)的窗口,然后当我按某个键时,该窗口会显示cos(x),最后,在下一次击键时,它会显示tan(x)

我只能找到关于在同一窗口上同时显示多个绘图的信息。在我的例子中,我的数据是每天的,我有大约300天的时间来查看

这与在图像查看器中打开300个图像差不多。您只需点击“下一步”即可查看下一步。不过,我无法导出到图像,因为我需要能够缩放和检查每个单独的绘图

我正在使用wxt,并使用popen()从C程序调用gnuplot,如果这很重要的话


有人有什么想法吗?

你可以使用
暂停鼠标按键来捕捉绘图后的键盘输入。键代码将在gnuplot中的
鼠标键
变量中可用(请参阅
帮助暂停
)。例如,下面绘制正弦曲线并等待键盘输入;按“a”将向左移动曲线,“d”将向右移动曲线:

set xrange [-10:10]
x0 = 0.

while 1 {
    plot sin(x-x0)
    pause mouse keypress
    print "Key pressed: ", MOUSE_KEY
    if (MOUSE_KEY == 100) {      # "d" pressed
        x0 = x0 + 0.1 }
    else {
        if (MOUSE_KEY == 97) {   # "a" pressed
            x0 = x0 - 0.1
        }
        else {
            break
        }
    }
}
这适用于
X
终端,但至少对
wxt
终端不起作用。我不确定是否可以从
wxt
将按键发送回gnuplot

使现代化 使用
wxt
终端的一个可能更简单的解决方案是使用
bind
命令:

set xrange [-10:10]
x0 = 0.
bind a "x0 = x0+0.1; replot"
bind d "x0 = x0-0.1; replot"
plot sin(x-x0)