【问题标题】:Character-mode (shell/ASCII) plots with Octave scripts使用 Octave 脚本的字符模式(shell/ASCII)绘图
【发布时间】:2018-06-15 19:46:47
【问题描述】:

在交互式 shell 会话中运行 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 会话中打开 octave,然后在 octave 终端调用我的脚本,我会得到该输出:

octave:1> testplot.m

但我真正想做的是从其他 bash 脚本中调用 testplot.m,例如:

$ ./testplot.m

$ octave testplot.m

两者都没有实际给出任何绘图输出。

我注意到交互式会话输出似乎会随着终端窗口的大小自动缩放,因此从这个意义上说,它取决于会话。

感谢您的帮助!

澄清 - 我知道如何在图形可见性关闭的情况下创建绘图,但我试图避免必须单独下载绘图文件。

我还发现了这个线程:Command-line Unix ASCII-based charting / plotting tool,但 eplot 似乎给了我错误(可能是用户错误、错误的数据格式等,但我不确定),我更愿意保留octave - 只要我在交互式会话中,octave 已经完全符合我的要求!

【问题讨论】:

  • 我认为您想在脚本末尾添加drawnow(情节后)
  • drawnow 或添加pause 解决我的问题。谢谢!

标签: octave


【解决方案1】:

您所要做的就是在您的 Octave 脚本末尾添加一个pause

问题是,你的脚本已经在最后显示了情节,但程序在你调用 plot 后立即结束,所以程序退出了,你甚至没有注意到情节。

在下图中,我添加了graphics_toolkit和gnuplot终端类型的设置,不是因为你的问题需要它,而是因为在我的系统上默认的绘图会有所不同。

【讨论】:

  • 谢谢!上周我使用了您的解决方案(具体来说,类似于pause(0.1))。在我看来drawnow 稍微优雅一些​​;有什么理由使用pause 而不是drawnow
  • @terikin 这些功能做不同的事情。 pause 没有参数,等到有事情发生,这可以防止情节消失。函数drawnow 将在继续之前强制绘图(在您的情况下,退出程序)。 drawnow 为你工作的唯一原因是你有终端滚动。但是,如果绘图位于单独的窗口上,或者终端窗口在程序之后关闭(或者是寻呼机,不确定),那么您会看到不同。
猜你喜欢
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
相关资源
最近更新 更多