绘图窗口没有响应
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
并且您的绘图窗口冻结,则 将默认工具包切换到 gnuplot:graphics_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
,请尝试 fltk
或 gnuplot
(其中一个可能比另一个更快)。
如果上述方法不起作用,您可能需要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
【讨论】:
以上是关于绘图窗口没有响应的主要内容,如果未能解决你的问题,请参考以下文章
窗体的Alpha通道透明色支持(一旦 Form 被定义为利用 LayeredWindow ,窗口的绘图不再响应沿用多年的 WM_Paint 消息)