在交互式 shell session 中运行 Octave 时,我知道我可以显示字符模式/ASCII 图,如下所述:Character-mode (shell) plots with Matlab / Octave?
我的问题是,当我的 Octave 脚本以非交互方式运行时,我希望有那种输出。也就是说,我希望能够运行以下内容:
#!/usr/bin/octave -qf
plot(sin(0:7))
并按照以下方式输出:
1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> + ---+ + + + + >
> +--- | >
> | | >
> | | >
0.5 >+ | | +>
> | | | >
> | | | >
> | | | >
>| + | >
0 >+ | | +>
> | | >
> | | >
> | + >
> | | >
> | | >
-0.5 >+ | | +>
> | | >
> +--- | >
> -- | >
> + + + + -+| + >
-1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1 2 3 4 5 6 7 8
如果我在 ssh session 中打开 Octave ,然后在 Octave 终端调用我的脚本,我会得到该输出:
octave:1> testplot.m
但我真正想做的是从其他 bash 脚本调用 testplot.m,例如:
$ ./testplot.m
或者
$ octave testplot.m
两者实际上都没有给出任何绘图输出。
我注意到交互式 session 输出似乎会随着终端窗口的大小自动缩放,因此从这个意义上说,它取决于 session 。
感谢您的任何帮助!
澄清 - 我知道如何在关闭图形可见性的情况下创建绘图,但我试图避免必须单独下载绘图文件。
我还发现了这个线程: Command-line Unix ASCII-based charting / plotting tool ,但 eplot 似乎给了我错误(可能是用户错误,错误的数据格式等,但我不确定),我更愿意将事情保持在 Octave - Octave 已经做了只要我在交互式 session 中,这正是我想要的!
最佳答案
您所要做的就是在 Octave 脚本的末尾添加一个 pause
。
问题是,您的脚本已经在最后显示了绘图,但是程序在您调用 plot
后立即结束,因此程序退出,您甚至没有注意到绘图。
在下图中,我添加了 graphics_toolkit 和 gnuplot 终端类型的设置,不是因为您的问题需要它,而是因为在我的系统上默认绘图会有所不同。
关于octave - 带有 Octave 脚本的字符模式(shell/ASCII)图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50881826/