gnuplot - gnuplot:在一个窗口中的各个图之间移动,就像一个图像查看器
问题描述
有没有办法让一个 gnuplot 窗口,然后从该窗口内循环到不同的图?
为了更清楚一点,假设我想以这种方式绘制 sin(x)、cos(x) 和 tan(x)。首先,会出现一个带有 sin(x) 的窗口,然后当我按下某个键时,同一个窗口会显示 cos(x),最后,在下一次击键时,它会显示 tan(x) .
我只能找到有关在同一窗口上同时显示多个图的信息。就我而言,我的数据是每天,我有大约 300 天的时间可以查看。
这有点像在图像查看器中打开 300 张图像。您只需点击“下一步”即可查看下一个。不过,我无法导出到图像,因为我需要能够缩放和检查每个单独的图。
我正在使用 wxt,并使用 popen() 从 C 程序中调用 gnuplot,如果这很重要的话。
有人有想法么?
解决方案
您可以pause mouse keypress
在绘图后使用捕获键盘输入。关键代码将在 gnuplot 中的MOUSE_KEY
变量中可用(请参阅参考资料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
.
更新
也适用于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)
推荐阅读
- java - 如何在控制器级别集成测试中使用 FakeMongo 和忽略 MongoDB 套接字连接
- javascript - 我的事件只有在被调用时才会触发
- azure-devops - 使用 Azure DevOps 显示代码覆盖率报告
- c# - Xamarin Forms LibVLC 视频未显示在发布配置中
- hyperlink - 如何让 Google 幻灯片上的超链接在同一窗口中打开?
- sonarqube - 有办法将 .isx 中的文件转换为 .dsx 吗?
- javascript - javascript同时调用多个函数
- flutter - 使用 Dio 包暂停、恢复和停止下载
- sql-server - 在数据库 SQL Server 上应用 TDE 成功,但后来显示未加密
- swift - 命令 LinkStoryboards 失败,退出代码为非零