Octave-Gnuplot-AquaTerm错误:设置终端aqua增强标题“Figure 1”...未知终端类型。

139

我通过Homebrew安装了Octave和gnuplot,并下载了AquaTerm.dmg。当我尝试绘图时,我收到以下消息:

octave:4> plot(x,y)

gnuplot> set terminal aqua enhanced title "Figure 1" font "*,6"

                  ^
     `line 0: unknown or ambiguous terminal type; type just 'set terminal' for a list`
在bash终端下,使用set terminalset Terminalset term(以及跟在后面的"aqua")都没有反应。我已经尝试打开"AquaTerm"后从Octave重新绘图,但是没有作用。我也尝试直接从Gnuplot绘图,但是同样遇到了问题...该如何使用"set terminal aqua"呢?
Gnuplot的启动信息显示"Terminal type set to 'x11'",但是不知道如何更改,之前的命令也没用。
由于AquaTerm没有从Homebrew安装,可能Octave/Gnuplot找不到它...但是我不确定。 有什么猜测吗?谢谢!

这跟bash有什么关系?你被要求在gnuplot中输入set terminal,而不是在bash中。 - n. m.
1
@n.m 我尝试在bash中操作,因为在消息后(因此在octave内部),键入“set terminal”会出错。现在我尝试打开gnuplot并键入“set terminal”,它可以显示一个列表,其中不包括“aqua”。感谢提供的链接!由于我是通过brew安装gnuplot的,我没有直接编译它。如果我在brew之外下载和编译gnuplot,不知道是否会与octave冲突或出现问题... - PGreen
1
对于Linux用户:尝试安装gnuplot-x11并将setenv("GNUTERM","X11")添加到您的~/.octaverc中。 - Martin Thoma
setenv("GNUTERM","qt") 对我有效。 - giapnh
15个回答

110

8
如果您不想更新全局的octaverc文件,可以创建一个名为~/.octaverc的文件,并在其中输入setenv命令。 - Raj
88
我刚刚在OS X 10.9(Mavericks)上安装了Octave 3.8.0,Octave捆绑包似乎设置为使用Qt进行窗口处理(而不是aqua或x11),并使用gnuplot_qt。创建一个包含“setenv(”GNUTERM“,”qt“)”的~/.octaverc文件对我有效(感谢@Raj和@nightlyop)。 - tomelgin
1
如果您使用Homebrew安装Octave,则可以在以下路径中找到octaverc文件:usr/local/Cellar/octave/4.0.0_5/share/octave/site/m/startup/octaverc - Kevin Zhao
为什么这个有效的答案没有被提交为正确答案? - pouyan021
6
对于我来说,在Sierra 10.12.6上使用setenv("GNUTERM","qt") 取得了成功。而"x11"则不行。 - Trevis Thomas
显示剩余3条评论

82

我在使用Octave-cli 3.8.0版本时,在OS X 10.9.1上遇到了类似的问题。观察到Octave-gui仍然可以绘制图表,并通过查阅octaverc的答案,我在/usr/local/octave/3.8.0/share/octave/site/m/startup/octaverc中添加了一行setenv("GNUTERM","qt")来使得Octave-cli能够绘图。

我不需要重新安装gnuplot或其他依赖项。


这太完美了!谢谢! - Thomas Ingalls
6
将 GNUTERM 设置为 qt 对我有用(不是 X11),但我将其放在我的主目录下(〜/ .octaverc),而不是上面提到的目录中。我不知道区别在哪里,但主目录似乎更加安装中立。 - sepans
3
我也在我的主目录 ~/.octaverc 中添加了 setenv("GNUTERM","qt"),现在使用 Octave 进行绘图非常顺利。谢谢。 - chekkal
谢谢。适用于El Capitan! - Rohan

69

将终端类型设置为x11可以解决问题,但如果您想让AquaTerm与gnuplot配合使用,请按照以下步骤操作:

首先,我们需要卸载现有的gnuplot安装程序,在终端中运行以下命令。

brew uninstall gnuplot

从这里下载AquaTerm: http://sourceforge.net/projects/aquaterm/,并像安装任何OSX应用程序一样进行安装。

从这里开始,有两种方法可以让gnuplot适配aquaterm,方法1更简单,但对于我来说不起作用,因为我的AquaTerm安装没有在/usr/local/lib中创建正确的符号链接,方法2是我成功的一种方法,我分享了我采取的步骤以使其正常工作。

方法1:只需在安装AquaTerm后重新安装gnuplot似乎可以解决此问题。

brew install gnuplot

前往验证步骤以查看是否一切正常,如果不是,请按照方法2进行操作。

方法2:该方法更为高级,但如果您有耐心,它一定会奏效。

基本上,gnuplot无法找到AquaTerm库文件,这就是为什么在安装gnuplot后,aqua不会显示为终端类型选项的原因。我们需要修改gnuplot的homebrew配方以启用aquaterm支持,打开gnuplot的brew配方,方法如下:

brew edit gnuplot

请按照以下 Github 提交信息所示添加这些行,这将启用 gnuplot 的 brew 选项以包括 aquaterm:https://github.com/mxcl/homebrew/issues/14647#issuecomment-21132477 通过进行以下检查,查看是否存在正确的 AquaTerm 库符号链接:
ls /usr/local/lib/libaquaterm*
ls /usr/local/include/aquaterm/*

以上第一行应该返回一些*.dylib文件,以上第二行应该返回一些*.h文件。如果它们不存在,请从终端运行以下命令:

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/.

有时候这是必要的,因为AquaTerm安装程序由于权限问题无法在正确的位置创建符号链接。一旦创建了/usr/local/符号链接,就可以像这样重新安装gnuplot:

brew install gnuplot --with-aquaterm # (formerly --aquaterm in old versions)

请根据以下步骤验证gnuplot是否能够使用AquaTerm,并愉快地绘图吧!


验证:通过在终端中启动gnuplot来确认已正确配置AquaTerm。

gnuplot

在gnuplot终端中键入此内容

gnuplot> set term

请找到这行代码

Available terminal types:
         aqua  Interface to graphics terminal server for Mac OS X
         ...

如果您看到上面的那行文字,那么说明您已经完成了操作,gnuplot已经正确配置,大家都很开心。

方法二万岁! - Ben Miller
2
FYI:我不需要更新gnuplot的配方;在安装gnuplot之前添加符号链接就可以解决问题。看起来Homebrew这方面的任何问题都已经解决了。干杯! - Aron
3
brew reinstall gnuplot --aquaterm 很顺利地运行了... 这时 aquaterm 应该已经被安装好了。 - Pykler
6
我的设置需要执行 brew install gnuplot --with-aquaterm 命令;显然,brew gnuplot 4.6.6 配方现在使用了 '--with-aquaterm' :无需编辑配方或创建符号链接,但你需要在安装gnuplot时显式添加--with-aquaterm参数。 - Mike Sokolov
感谢您的大力帮助...使用第二种方法对我很有效。 - minhas23
请查看rehumbus的下面的答案,那里提供了一个更简单的解决方案,可以避免重新安装。只需将setenv("GNUTERM","qt")添加到~/.octaverc即可。 - laverick

47

我找到了一种使用Octave生成图形的方法,虽然不是使用AquaTerm而是x11。问题在于Octave“强制”gnuplot使用aquaaterm进行绘图。我没有安装和集成aquaaterm到gnuplot中,而是在Octave中键入:setenv GNUTERM x11。这样,图形将使用已经在gnuplot终端列表(set terminal)中的x11来生成。我知道这只是一个补丁,但最后我不介意aquaaterm或x11,我只想生成图形。


1
谢谢,您的答案帮了我大忙。在尝试了至少六种不同的解决方案之后,我终于得到了帮助。 - Kim Stacks
2
如果运行的是Linux Mint 16,您可能需要安装gnuplot-x11。sudo apt-get install gnuplot-x11 然后按照PGreen所说的做,我发现我的conf文件在/etc/octave.conf。希望能有所帮助。 - user1153623

24

set terminalset term 是 gnuplot 命令。

只需在命令行中运行 gnuplot 即可访问 gnuplot shell。

但是,对我来说这并没有起作用,/usr/local/share/octave/site/m/startup/octaverc~/.octaverc 中的 setenv("GNUTERM","x11") 也一样。

因此,我在 gnuplot shell 中运行了 set term 并未在列表中看到 x11。 我使用 homebrew 安装了 gnuplot,所以我先卸载它 brew uninstall gnuplot,然后使用 --with-x 标志安装了具有 x11 的版本:

brew install gnuplot --with-x

这解决了我的问题。 使用 brew info gnuplot 查看 gnuplot 安装选项列表。

P.S. 是的,我确实下载了 X11 dmg 并使用软件包安装程序进行了安装,但 gnuplot 在支持终端列表中仍然没有 x11。


2
非常有帮助。请注意,使用QT或WxWindows终端时,图形看起来更清晰,可以通过分别使用--qt--wx brew安装选项进行安装(如果需要的话)。 - Bryan P
1
不要使用 brew install gnuplot --with-x,而是使用 brew reinstall gnuplot --with-x11(如果已经安装了gnuplot;--with-x似乎不再受支持)。 - Tushar

10

你可以尝试这个:

>> brew reinstall gnuplot --with-aquaterm
或者
>> brew uninstall gnuplot
>> brew install gnuplot --with-aquaterm

可能需要更多的解释。 - Jens
3
请注意,在重新安装gnuplot之前,您实际上需要先安装aquaterm。http://aquaterm.github.io/ - Lee Avital
with-aquaterm选项已不再适用于gnuplot:https://github.com/Homebrew/homebrew-core/issues/46923 - Tyler Dane Hitzeman

8
在您的主目录下创建一个名为.octaverc的文件,并将GNUTERM设置为X11。
echo "setenv('GNUTERM','X11')" > ~/.octaverc

打开 octave 终端并输入 sombrero 检查是否可以绘图。
octave:1> sombrero

6

Anton是正确的。现在你可以使用--with-aquaterm选项重新安装gnuplot。如果我有足够的声望点数,我会给他的答案点赞。

$ brew uninstall gnuplot
$ brew install gnuplot --with-aquaterm

Mackuntu提到这个问题已经在Github上讨论过。

https://github.com/mxcl/homebrew/issues/14647#issuecomment-21132477

但他建议使用选项--aquaterm。如果你仔细看一下Github链接,你会发现选项是--with-aquaterm。今天重新安装带有此选项的gnuplot,使我能够在OS X上运行一些旧的Octave代码,用于绘制图形。


6
在我的情况下,在Mas OS Mojave上,对我有效的解决方案略有不同(可能只是语法问题)。根据这个主题的讨论,我找到了适合我的解决方案 - 需要注意的是,我可以从Octave-cli绘图,但不能直接从终端中的Octave命令行绘图。因此,我创建了一个˜/.octaverc文件,并添加了以下命令:
setenv GNUTERM qt

我刚刚退出了Octave的命令行,然后重新进入,就能够绘图了。


6

如果你仍然遇到“Segmentation Fault: 11”和“unable to load appropriate font”错误,下面这些命令适用于我:brew uninstall fontconfig && brew install fontconfig --universal - Julian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接