Image processing 在不带X11的机器上(即不涉及前端)将Mathematica中的绘图导出为图像
考虑以下带有内核命令行界面的对话框:Image processing 在不带X11的机器上(即不涉及前端)将Mathematica中的绘图导出为图像,image-processing,export,wolfram-mathematica,Image Processing,Export,Wolfram Mathematica,考虑以下带有内核命令行界面的对话框: $ math Mathematica 6.0 for Linux x86 (32-bit) In[1]:= p = Plot[x^2, {x,-1,1}] Out[1]= -Graphics- In[2]:= Export["foo.png", p] Out[2]= foo.png 这在Linux x86(32位)(2008年6月2日)版本为$Version=6.0的机器上运行正常,但在Linux x86(64位)(2008年11月11日)版本为$7.
$ math
Mathematica 6.0 for Linux x86 (32-bit)
In[1]:= p = Plot[x^2, {x,-1,1}]
Out[1]= -Graphics-
In[2]:= Export["foo.png", p]
Out[2]= foo.png
这在Linux x86(32位)(2008年6月2日)版本为$Version=6.0的机器上运行正常,但在Linux x86(64位)(2008年11月11日)版本为$7.0的机器上运行失败,错误如下:
Export::nofe: A front end is not available; export of PNG
requires a front end.
我能想到的任何其他图像格式都有类似的错误
所以问题是,如何让Mathematica内核,无前端,导出图像?为什么它在Mathematica 6.0中工作顺利?如果上述示例在版本7中适用,请让我知道
PS:Version7引入了使用前端的功能,但在
Developer`UseFrontEnd::nofestart:
Unable to launch a front end. Proceeding without a front end.
可能是因为机器上没有安装X11
补遗
事实证明,版本6和版本7在这方面没有区别。相反,在版本为6的机器上,前端被无声地调用。这个问题的答案清楚地表明,另一台机器的问题是没有X服务器,因此无法调用前端。导出图形也需要版本6中的前端。反过来,前端可能需要X(毕竟,即使某些2D绘图也需要3D图形加速…)
我只有适用于Windows的v6。从命令行会话导出图形时,前端会根据需要在后台自动启动。从MathKernel导出图形需要前端。图形的渲染完全由前端覆盖。如果没有前端,则无法导出图形。没有解决办法
如果您有一个工作前端,您可以使用:
UseFrontEnd[导出[文件名,图形]]
这将从终端调用前端,允许您导出图形
要在未安装X server和windows manager的Linux计算机上安装工作前端,您可以使用以下选项:
使用其他机器上的X显示。见例。基本上可以归结为设置环境变量export DISPLAY=machine\u address:0.0
或在每个执行期间传递选项-DISPLAY machine\u address:0.0
本地安装Xvfb,它是一个X服务器帧缓冲区。它使用起来非常简单和直接。例如,参见Xvfb上的Wikipedia条目。您可以在运行XvfbXvfb:display\u nr&
时设置X display,然后像前面的选项一样使用它
谢谢Zig!这一定是我的mathematica 6副本所发生的事情——它自动、无声地启动前端。我试图用它将一系列图形导出为pdf格式,方法是列出所有图形,但它最终生成了一个巨大的图形水平条带。有没有快速的方法可以将它们垂直放置,这样我就可以打印出来?@Timulus:例如。顺便说一句:这是一个有点离题和抱歉的滞后。