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

时间:2018-06-15 16:02:23

标签: gnuplot

有没有办法有一个gnuplot窗口,然后从那个窗口中循环到不同的图?

要更清楚一点,说我想以这种方式绘制sin(x),cos(x)和tan(x)。首先,一个窗口会出现sin(x),然后当我按下某个键时,同一个窗口会显示cos(x),最后,在下一次击键时,它会显示tan(x)

我只能在同一个窗口找到同时显示多个图的信息。在我的情况下,我的数据是每天,我有大约300天的时间来查看。

与在图像查看器中打开300张图像有点相同。你只需点击“下一步”即可查看下一个。但是,我无法导出到图像,因为我需要能够缩放和检查每个单独的图。

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

有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用pause mouse keypress在绘图后捕获键盘输入。密钥代码将在MOUSE_KEY变量的gnuplot中提供(请参阅help pause)。例如,下面绘制正弦曲线并等待键盘输入;按" 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)