【问题标题】:Plot window not responding绘图窗口没有响应
【发布时间】:2012-08-15 11:28:47
【问题描述】:

我使用的是 Windows 7 64 位。每次我使用绘图功能时,绘图窗口都会显示并绘制成功,但之后它会停止响应并必须关闭它。

例如:

x = linspace(0,1,10)
y = x.^2
plot(x,y);

奇怪的是,当绘图窗口冻结并且我必须关闭 octave 窗口时,它们也会无响应。如果我不使用绘图功能,则不会发生这种情况。

我不知道为什么。是不是因为我使用的是 64 位版本?请告诉我如何解决这个问题。

【问题讨论】:

    标签: plot octave freeze


    【解决方案1】:

    哦。我的朋友向我展示了这个命令,它工作正常:

    pkg rebuild -noauto oct2mat

    该命令重新安装包,但将其标记为在启动时默认不加载。此行为现​​已更改,默认情况下不会加载新版本的 Forge 软件包。

    问题是永远不应该加载包 oct2mat。它掩盖了 Octave 核心的几个功能,因此它开始表现得很奇怪。除非您真的需要此软件包,否则最好将其删除。

    oct2mat的目的是为了弥补Matlab中缺少的功能,让为Octave编写的代码在Matlab中运行。如果您不需要 oct2mat,请将其删除。没有人需要安装所有的包,它实际上可以make your Octave install worse 例如在 oct2mat 的情况下。

    【讨论】:

    • 请问,我应该在哪里运行这个命令?我正在使用 Ubuntu,终端无法识别 pkg,而 Octave 只显示 no such file or directory
    • 我在 Octave 4.0 中遇到了同样的问题。我解决了它在 C:\Octave\Octave-4.0.0\share\octave 中创建空目录“包”
    【解决方案2】:

    问题可能是您安装 Octave 时使用的图形工具包。

    要检查这一点,请在 Octave 命令行中键入 graphics_toolkit

    如果响应为 fltk 并且您的绘图窗口冻结,则 将默认工具包切换到 gnuplotgraphics_toolkit('gnuplot')

    测试问题是否解决:x=1:10; y=x.^2; plot(x,y)

    在您的 Octave 安装目录中的 octave.rc 文件中永久更改:

        On Windows:  \Octave\share\octave\site\m\startup\octaverc
        On Linux:     ~/.octaverc
    


    还是行不通?
    • 如果响应是 qt,请尝试 fltkgnuplot(其中一个可能比另一个更快)。

    • 如果上述方法不起作用,您可能需要install/re-install gnuplot。 (感谢 lukas 和 saurabh 提供的这种极端情况)。

    【讨论】:

    • 测试代码不应该是-x=1:10; y=x.^2; plot(x,y) 注意 x.^2 而不是 .x^2
    • 在我的例子中,默认工具包是“qt”,切换到“fltk”是解决方法(我尝试了“gnuplot”,但速度非常慢)。 Windows 7x64。
    • 在我的例子中,默认工具包是“qt”,“gnuplot”和“fltk”都有效。 Windows 8 x64。
    • @AssadEbrahim :您可能想要更新最后提供的链接。谢谢:在我的情况下,默认值为“qt”。 gnuplot 工作太慢,“fltk”工作正常!视窗 10 x64;八度 4.0.0
    • 在 linux 上这个文件位于 ~/.octaverc
    【解决方案3】:

    正如 Assad Ebrahim 所写,问题出在工具包上。我在 3.8.2 版中遇到了另一个问题。 gnuplot 根本不起作用。没有显示绘图窗口,我需要关闭 Octave。如果有人有同样的问题,解决方案是下载 gnuplot 并将其安装到 Octave 文件夹。它取代了旧的 gnuplot,新的 gnuplot 正在工作。

    感谢您的建议。

    【讨论】:

    • 这正是我遇到的问题,仅将 graphisc_toolkit('gnuplot) 更改为 gnuplot 并不能解决问题。但是重新安装 gnuplot 确实如此!谢谢!
    【解决方案4】:

    Answer given by Assad 绝对正确,对我也很有效。

    这只是一个例外情况。

    在 Octave 命令行中输入:graphics_toolkit

    如果答案是 qt 而不是 fltk,那么您的 PC 可能需要与 SourceForge 分开安装 gnuplot,因为 Octave 在 W8/10 中安装时会出现一些错误。

    这是附加的链接。 https://sourceforge.net/projects/gnuplot/?source=directory

    您无需更改任何安装文件。

    这应该可以工作

    【讨论】:

    • 我在 Octave-4.0.3 中也得到了 'qt'。我必须将 gnuplot 的标准终端设置为 windows,并且必须将 gnuplot_binary `C:\Program Files (x86)\gnuplot\bin\gnuplot.exe' 添加到 .octaverc
    • 我单独安装了 gnu plot。但是问题还是没有解决
    【解决方案5】:

    当我第一次测试绘制示例图形时,图形窗口出现但一到两分钟没有响应,然后图形出现了。更多的情节立即出现。 操作系统:Windows 7 64 位 八度 4.0.3 64 位。

    【讨论】:

    【解决方案6】:

    在运行您的代码时,使用 octave 4.2 时我有类似的症状(无法关闭绘图窗口,绘图需要时间才能出现)。当语句不以分号 (;) 结尾时,命令和结果将在命令窗口中打印。在我看来,命令窗口停止解释代码并等待用户按下有效键 (f,b,q) 以继续或中止执行。停止点取决于先前执行的代码和命令窗口的大小,因此这些症状的间歇性。

    解决方案:

    选项 1:转到命令窗口并按住 f(前进)

    选项2:使用分号终止语句

    x = linspace(0,1,10);
    y = x.^2;
    plot(x,y);
    

    选项 3:调整一些命令窗口设置

    希望对你有帮助

    【讨论】:

      【解决方案7】:

      所以在 Windows 上,这对我有用:

      第 1 步: 安装 gnuplot 到C:\Program Files (x86)\gnuplot:

      下载链接:

      https://sourceforge.net/projects/gnuplot/

      第 2 步: 转到给定目录下面(考虑到您已经在 C:\ root 中安装了 Octave):

      C:\Octave\share\octave\site\m\startup

      在记事本中打开该目录中的octaverc 文件。

      第 3 步:

      将以下行添加到文件末尾。

      gnuplot_binary 'C:\Program Files (x86)\gnuplot\bin\gnuplot.exe'
      graphics_toolkit('gnuplot')
      

      第 4 步:

      保存文件并退出记事本。如果Octave 已打开,请也将其关闭。

      第 5 步:

      打开Octave并在其中输入以下命令进行检查:

      plot([1,2,3],[4,5,6]);
      

      请注意,第一次可能需要gnuplot 最多 5 分钟 渲染图形。因此,请不要尝试关闭应用程序。随后的 简单的绘图渲染速度非常快,通常不到 1 秒。

      【讨论】:

      • 很好的解释。谢谢:)
      • 第 5 步让我很恼火。为什么在地球上需要 5 分钟,5 秒,甚至 5 毫秒???太荒谬了。
      • 第 5 步救了我。 +1! .那和 graphics_toolkit('gnuplot') 仅此而已。 (这不是真正的 5 分钟,但对我来说只有 30 秒。)
      【解决方案8】:

      我在 4.0.3 版中遇到了同样的问题,将默认工具包切换为 gnuplot,因为 Assad Ebrahim said 对我不起作用。然后我在Octave for Microsoft Windows找到了一些东西:

      Windows 的当前 octave 提供了一个功能不全的 gnuplot。 因此您不能使用 gnuplot 图形工具包的全部功能

      还有如何下载和安装 gnuplot 的说明。希望对你有帮助。

      【讨论】:

        【解决方案9】:

        以下是在 Emacs 中运行 Octave 时绘图窗口冻结的解决方案,归功于问题 How to get Octave's plot to work under emacs? 中的 John Lawrence Aspdenuser2699。之所以把它带到这里,是因为这个问题更容易找到。

        问题可能是 Emacs octave-mode 的--no-line-editing 开关引起的,你可以通过M-x customize-variable RET inferior-octave-startup-args RET 修复它并将--no-line-editing 更改为--line-editing

        【讨论】:

          【解决方案10】:

          我有同样的问题, 有时 linspace 会在命令窗口中向您显示所有结果并等待您的交互。 在命令后添加;,或点击q 退出命令窗口 x = linspace(0,10,100);

          永久解决方案,已编辑

          通过将more off 放入八度命令窗口来禁用屏幕输出分页。这将阻止代码等到您看到所有行。

          如果您想重新启用此功能,请使用 more on

          documentation

          相关问题

          prevent-user-interaction-on-command-window-for-octave

          Can't stop execution in gui command window

          【讨论】:

            猜你喜欢
            • 2019-04-23
            • 2018-10-16
            • 2021-03-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-09
            • 1970-01-01
            相关资源
            最近更新 更多