需要绘图时八度冻结

Octave freeze when it needs to plot

我在 Octave 绘图时遇到问题。 Octave 和 Gnuplot 在 OS X El Capitan 上与 Homebrew 一起安装,在尝试完成第一个绘图后,出现错误:

set terminal aqua enhanced title "Figure 1" size 560 420 font "*,6" dashlength 1

此问题已使用 this answer 中的说明修复,简而言之:

brew uninstall gnuplot

sudo ln -s /Library/Frameworks/AquaTerm.framework/Versions/A/AquaTerm /usr/local/lib/libaquaterm.dylib
sudo ln -s /Library/Frameworks/AquaTerm.framework/Versions/A/AquaTerm /usr/local/lib/libaquaterm.1.0.0.dylib
sudo ln -s /Library/Frameworks/AquaTerm.framework/Versions/A/Headers /usr/local/include/aquaterm

brew install gnuplot --with-aquaterm

回声'

现在,当我绘制时,例如。 plot(rand(3)),然后 Octave 就冻结了,所以我必须使用 Control-C 来中止。当我尝试直接从 Gnuplot 和 set term aqua 绘图时,它起作用了,我得到了绘图。但是在 Octave 中,当我想要 set term aquaset term 时,它会报告:

error: invalid conversion from string to real N-d array error: set:

expecting graphics handle as first argument

另外,我试过:

echo -E "setenv('GNUTERM','X11')" > ~/.octaverc

但这也无济于事。我认为问题出在 graphics_toolkit,但我不知道如何解决。

octave:1> graphics_toolkit aqua

error: graphics_toolkit: aqua toolkit is not available

error: called from graphics_toolkit at line 81 column 5

octave:2> graphics_toolkit fltk

error: graphics_toolkit: fltk toolkit is not available

error: called from graphics_toolkit at line 81 column 5

更新

接受的解决方案在版本 4.2.0-rc2 之前有效,所以现在查看 了解更多信息。

我注意到当我输入命令 available_graphics_toolkits 时它只显示

ans =

{

[1,1] = gnuplot

}

当我尝试使用 loaded_graphics_toolkits 时,它会打印出

ans = {}(1x0)

我猜问题是没有加载 GUI 环境,所以 Octave 然后用 --with-gui 选项重新编译

brew reinstall octave --with-gui

这解决了一个问题。

更新

据此commit, from last September, version 4.2.0-rc2, --with-gui does not work anymore. So the best it to follow the instruction from

虽然 available_graphics_toolkitsloaded_graphics_toolkits 返回了类似的结果,但米勒接受的答案对我不起作用。 octave 包似乎不再有 --with-gui 标志。

相反,我必须先 brew reinstall gnuplot --with-x11 然后创建一个包含内容

~/.octaverc
setenv("GNUTERM", "X11")
graphics_toolkit("gnuplot")

我确实预装了 X11。

The first plot after starting Octave 4 can last a while.

参考:http://wiki.octave.org/Octave_for_MacOS_X

来自 Octave 命令行的

setenv("GNUTERM","qt") 为我解决了这个问题! 见程回答:

我必须将 Octave 从 4.4.0 更新到最新版本 5.2.0 才能解决这个问题。 但是我还是想不通为什么以前的版本一开始就不正常。