绘图窗口没有响应

Posted

技术标签:

【中文标题】绘图窗口没有响应【英文标题】: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 位版本?请告诉我如何解决这个问题。

【问题讨论】:

【参考方案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 位。

【讨论】:

我也经历过这种行为。它看起来需要一段时间才能在 Windows 上生成字体缓存:***.com/a/48247691/597487【参考方案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 Aspden 和 user2699。之所以把它带到这里,是因为这个问题更容易找到。

问题可能是 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

【讨论】:

以上是关于绘图窗口没有响应的主要内容,如果未能解决你的问题,请参考以下文章

Pygame 窗口几秒钟后没有响应

窗体的Alpha通道透明色支持(一旦 Form 被定义为利用 LayeredWindow ,窗口的绘图不再响应沿用多年的 WM_Paint 消息)

SDL 窗口没有响应

OpenCV - imshow()在等待来自命令窗口的输入时没有响应

Pygame 窗口在全屏模式下没有响应

调整窗口大小时,光滑的滑块没有响应