15.2.9 打印和保存绘图

print命令允许您将绘图发送到打印机,或以多种格式保存绘图。例如,

print -dpsc

将当前图形打印到彩色PostScript打印机。并且,

print foo.pdf

将当前图形保存为名为 foo.pdf 的PDF(便携式文档格式)文件。

当前的图形工具包生成的图形显示非常相似,但不同的解释器在显示特殊文本和打印此类文本的能力上有所差异。通常,"tex"解释器(默认值)在屏幕显示和打印方面都是表现最全面的。然而,对于复杂文本公式的呈现,"latex"解释器是首选。"none"解释器则按原样逐字打印文本,这种方式可移植性非常好,但不支持粗体、斜体、上标、下标、希腊字母等。

当使用-painters渲染器(所有矢量格式的默认渲染器)打印时,可以考虑以下两个选项:

下面是一个使用-dpdflatexstandalone选项展示文本打印功能的完整示例:

x = 0:0.01:3;
hf = figure ();
plot (x, erf (x));
hold on;
plot (x, x, "r");
axis ([0, 3, 0, 1]);
text (0.65, 0.6175, ...
      ['$\displaystyle\leftarrow x = {2 \over \sqrt{\pi}}' ...
       '\int_{0}^{x} e^{-t^2} dt = 0.6175$'],
      "interpreter", "latex");
xlabel ("x");
ylabel ("erf (x)");
title ("erf (x) with text annotation");
print (hf, "plot15_7", "-dpdflatexstandalone");
system ("pdflatex plot15_7");
open plot15_7.pdf

此示例的结果可以在图15.7中查看。

扩展文本示例

图15.7:使用-dpdflatexstandalone包含文本的示例

 
print ()
print (options)
print (filename, options)
print (hfig, …)
RGB = print ("-RGBImage", …)

格式化图形以进行打印,然后将其保存到文件、发送到打印机,或返回RGB图像。

filename定义输出文件的名称。如果文件名没有后缀,则会从指定的设备推断出后缀并附加到文件名后。当既没有文件名也没有"-RGBImage"选项时,输出将发送到打印机。各种选项和文件名参数可以按任意顺序给出,但图形句柄参数hfig如果存在,则必须放在第一位。

示例:使用PDF和JPEG格式打印到文件。

figure (1);
clf ();
surf (peaks);
print figure1.pdf    # 扩展名指定格式
print -djpg figure1  # 将生成"figure1.jpg"文件

如果第一个参数是图形对象的句柄hfig,则指定要打印的图形。默认情况下,打印由gcf返回的当前图形。

对于分页格式的输出,例如PostScript和PDF,页面大小由图形的papersize属性与paperunits属性共同指定。绘图在页面上的位置和大小由图形的paperposition属性指定。页面的方向由图形的paperorientation属性指定。

对于非分页格式——例如JPEG等图像格式——输出的宽度和高度由图形的paperposition(3:4)属性值指定。

print命令支持多种options

-fh

指定要打印的图形的句柄h

示例:打印图形1。

figure (1);
clf ();
surf (peaks);
figure (2);
print -f1 figure1.pdf
## 等效的函数形式:
print (1, "figure1.pdf")
-Pprinter

设置未指定filename时绘图发送到的打印机名称。

示例:使用PostScript格式打印到名为PS_printer的打印机。

clf ();
surf (peaks);
print -dpswrite -PPS_printer
-RGBImage

返回图形的M×N×3 RGB图像。图像的大小取决于格式化选项。这类似于对绘图进行屏幕截图,但可以更改格式化选项,例如分辨率或单色/彩色。

示例:获取图形图像的像素。

clf ();
surf (peaks);
rgb = print ("-RGBImage");
-image | -opengl
-vector | -painters

指定使用基于像素的渲染器(-image-opengl)还是基于矢量的渲染器(-vector-painters)。这相当于更改图形的"Renderer"属性。当图形的"RendererMode"属性为"auto"(默认值)时,Octave将为光栅格式(如JPEG)使用"opengl"渲染器,为矢量格式(如PDF)使用"painters"渲染器。这些选项仅受"qt"图形工具包支持。

-svgconvert (default)
-nosvgconvert

当使用-painters渲染器时,启用或禁用基于SVG的后端工具链,其增强特性如下:

字体处理:

对于"none"和"tex"解释器,实际字体嵌入到输出文件中,从而允许在所有矢量格式中打印任意字符和字体。

使用"latex"解释器的字符串通过路径对象渲染。这看起来很好,但请注意文本信息(字体、字符等)会丢失。

输出简化:

默认情况下,-painters选项使用三角形组合来渲染补丁和曲面对象。这可能导致查看文件时出现抗锯齿伪影。-svgconvert选项重建多边形以避免这些伪影(尤其适用于二维图形)。

透明度:

允许在PDF格式中打印透明图形对象。对于PostScript格式,任何透明对象的存在都将导致输出被光栅化。

注意:如果Octave是使用早于5.13的Qt版本构建的,-svgconvert可能导致图像对象的渲染不准确。

-polymerge
-nopolymerge
-polymerge-all

当使用基于SVG的后端-svgconvert时,面被渲染为三角形。在某些情况下,一些查看器可能会在三角形共享边的位置显示细线。这些选项控制是否将所有共享边的三角形合并为多边形(-polymerge-all,对于包含许多三角形——包括线条标记——的图形可能耗时较长)、仅合并连续多边形(-polymerge),或完全不合并三角形(-no-polymerge)。默认情况下,仅合并共享边的连续三角形,除非打印的图形包含补丁或曲面图形对象,在这种情况下,所有共享边的三角形都会被合并。

-portrait
-landscape

指定打印输出的绘图方向。对于非打印输出,输出的纵横比对应于指定方向上由"paperposition"属性定义的绘图区域。此选项等效于更改图形的"paperorientation"属性。

-fillpage
-bestfit

当使用基于页面的格式(PDF、PostScript、打印机)时,忽略"paperposition"属性,使绘图占据整个页面。-fillpage选项将拉伸绘图以占据页面,四周留有0.25英寸的边距。-bestfit选项将扩展绘图以在页面上占据尽可能多的空间,同时不扭曲绘图的原始纵横比。

-color
-mono

彩色或单色输出。

-solid
-dashed

强制所有线条分别为实线或虚线。

-noui

不打印可能覆盖绘图的uicontrol对象(如按钮)。这是默认行为,并且如果不使用外部屏幕捕获工具,则无法在输出中包含uicontrol对象。

-rNUM

位图的分辨率,以每英寸点数(DPI)为单位。对于图元文件和SVG,默认值为屏幕分辨率;对于其他格式,默认值为150 DPI。要指定屏幕分辨率,请使用"-r0"

示例:高分辨率光栅输出。

clf ();
surf (peaks (), "facelighting", "gouraud");
light ();
print ("-r600", "lit_peaks.png");
-Sxsize,ysize

光栅格式(包括PNG、JPEG以及非常规地包括SVG)的绘图大小,以像素为单位。对于所有矢量格式(包括PDF、PS和EPS),绘图大小以点为单位指定。此选项等效于通过设置图形属性paperposition(3:4)来更改输出的宽度和高度。当使用print函数的命令形式时,必须将xsize,ysize选项用引号括起来,以防止Octave解释器识别嵌入的逗号(',')。例如,写成"-S640,480"。

-tight
-loose

强制EPS文件使用紧密或宽松的边界框。默认值为紧密。

-preview

为EPS文件添加预览。支持的格式有:

-interchange

提供交换预览。

-metafile

提供图元文件预览。

-pict

提供PICT预览。

-tiff

提供TIFF预览。

-append

将PostScript或PDF输出追加到同类型的现有文件中。

-Ffontname
-Ffontname:size
-F:size

对所有文本使用fontname和/或fontsize。某些设备会忽略fontname:fig等。

-ddevice

可用输出格式由device选项指定,为以下之一(标有'*'的设备仅在Gnuplot工具包中可用):

矢量格式

svg

可缩放矢量图形(Scalable Vector Graphics)。

pdf
pdfcrop

便携式文档格式(Portable Document Format)。pdf设备将图形格式化为打印在纸上。周围页面的大小和图形在页面内的位置由paper*图形属性定义。

如果您不想要周围页面,请使用pdfcrop

注意:使用-nosvgconvert选项时,PDF继承与PostScript相同的限制(有限的字体集和缺乏透明度)。

eps(2)
epsc(2)

封装的PostScript(Encapsulated PostScript,级别1和2,单色和彩色)。

基于OpenGL的图形工具包始终生成PostScript级别3.0。除非使用-svgconvert选项(默认值),否则它们对文本的支持有限。限制包括仅使用ASCII字符(例如,无希腊字母)和仅支持三种基本PostScript字体:Helvetica(默认值)、Times或Courier。任何其他字体将被Helvetica替代。

ps(2)
psc(2)

eps相同,只是图形格式化为打印在纸上。周围页面的大小和图形在页面内的位置由paper*图形属性定义。

pslatex
epslatex
pdflatex
pslatexstandalone
epslatexstandalone
pdflatexstandalone

为绘图的文本部分生成LaTeX文件filename.tex,为剩余图形部分生成文件filename.(ps|eps|pdf)。图形文件后缀.ps|eps|pdf由指定的设备类型决定。带'standalone'选项生成的LaTeX文件可以直接由LaTeX处理。不带'standalone'选项生成的文件旨在从另一个LaTeX文档中包含。无论哪种情况,LaTeX文件都包含一个\includegraphics命令,因此在处理LaTeX文件时会自动包含生成的图形文件。写入LaTeX文件的字符串完全按照在绘图中的指定方式保存。如果使用了TeX模式解释器的任何特殊字符,则必须在处理LaTeX之前编辑该文件。具体来说,特殊字符必须用美元符号括起来($ … $),LaTeX识别的其他字符(如花括号)可能也需要编辑。pdflatex设备以及任何standalone格式在Gnuplot工具包中不可用。

epscairo*
pdfcairo*
epscairolatex*
pdfcairolatex*
epscairolatexstandalone*
pdfcairolatexstandalone*

使用Cairo渲染器生成输出。epscairopdfcairo设备与epsc设备同义。LaTeX变体为绘图的文本部分生成LaTeX文件filename.tex,为绘图图形部分生成图像文件filename.(eps|pdf)。'standalone'变体的行为与上述'epslatexstandalone'描述相同。

canvas*

基于JavaScript的HTML5画布绘图,可在Web浏览器中查看。

emf
meta

Microsoft增强型图元文件(Microsoft Enhanced Metafile)。

fig

XFig。对于Gnuplot图形工具包,可以使用附加选项-textspecial-textnormal(默认值)来控制是否应为图形中的文本设置特殊标志。

latex*
eepic*

LaTeX图片环境和扩展图片环境。

tikz
tikzstandalone*

使用PGF/TikZ格式生成LaTeX文件。基于OpenGL的工具包创建PGF文件,而Gnuplot创建TikZ文件。tikzstandalone设备生成一个包含TikZ文件的LaTeX文档。

光栅格式

png

便携式网络图形(Portable Network Graphics)。

jpg
jpeg

JPEG图像。

tif
tiff
tiffn

TIFF图像,带LZW压缩(tif, tiff)或未压缩(tiffn)。

gif

GIF图像。

pbm

PBMplus。

dumb*

ASCII艺术。

如果省略设备类型,则从文件扩展名推断;如果没有文件名,则作为PostScript发送到打印机。

-dghostscript_device

Ghostscript支持其他设备。一些示例如下:

ljet2p

HP LaserJet IIP。

pcx24b

24位彩色PCX文件格式。

ppm

便携式像素映射文件格式。

有关可用格式和设备的完整列表,请输入system ("gs -h")

当Ghostscript输出发送到打印机时,大小由图形的"papersize"属性决定。当输出发送到文件时,大小由图形"paperposition"属性定义的绘图框决定。

-Gghostscript_command

指定调用Ghostscript的命令。Unix系统的默认值为"gs",Windows系统的默认值为"gswin32c"

-TextAlphaBits=n
-GraphicsAlphaBits=n

Octave能够通过使用Ghostscript为各种打印机、位图和矢量格式生成输出。对于位图和打印机输出,使用Ghostscript的TextAlphaBits和GraphicsAlphaBits选项应用抗锯齿。默认位数分别为4和1。N的允许值为1、2或4。

-no-append-file-extension

使用此选项时,filename按原样使用,即不会自动附加与文件格式匹配的文件扩展名。

另请参阅: saveas, getframe, savefig, hgsave, orient, figure.

 
saveas (h, filename)
saveas (h, filename, fmt)

将图形对象h以图形格式fmt保存到文件filename

如果h是图形对象的句柄,则保存该图形对象。如果h是其他图形对象的句柄,则保存包含该图形对象的图形。

可以使用print接受的所有设备格式。常用格式有:

ofig

Octave图形文件格式(默认值)。

mfig

两个文件:包含打开Octave图形文件filename.ofig代码的Octave m文件。

ps

PostScript。

eps

封装的PostScript。

pdf

便携式文档格式。

jpg

JPEG图像。

png

便携式网络图形图像。

emf

增强型图元文件。

tif

TIFF图像(已压缩)。

如果省略fmt,则从filename的扩展名提取。没有扩展名时的默认格式是"ofig"

clf ();
surf (peaks);
saveas (1, "figure1.png");

另请参阅: print.

 
orient (orientation)
orientation = orient ()
orient (hfig, orientation)
orientation = orient (hfig)

查询或设置当前活动图形或由句柄hfig指定的图形的纸张方向。

有效的orientation值为"portrait"(纵向)、"landscape"(横向)或"tall"(加长横向)。加长横向与横向类似,但图形被缩放以填满整个页面,而不会保留绘图框的纵横比。

在调用print时,页面方向用于配置输出页面方向。如果不带参数调用orient,则返回当前图形纸张方向的字符串。

从Octave 6.2.0开始,如果未指定图形句柄,orient使用由gcf返回的当前图形。

另请参阅: print.

 
hgsave (filename)
hgsave (h, filename)
hgsave (h, filename, fmt)

将图形句柄向量h指定的图形对象保存到文件filename中。

如果存在,fmt指定保存文件的格式,为以下之一:

  • -binary, -float-binary
  • -hdf5, -float-hdf5
  • -V7, -v7, -7, -mat7-binary
  • -V6, -v6, -6, -mat6-binary
  • -text
  • -zip, -z

默认格式为-binary以最小化存储空间。

编程说明:当生成用于最终出版的图形时,请使用printsaveas。当需要能够继续将图形作为Octave对象编辑时,请使用hgsave/hgload

另请参阅: hgload, hdl2struct, savefig, saveas, print.

 
h = hgload (filename)
[h, old_prop] = hgload (filename, prop_struct)

filename中的图形对象加载到图形句柄向量h中。

如果filename没有扩展名,Octave将尝试查找不带默认扩展名.ofig的文件以及带该扩展名的文件。

如果提供了结构prop_struct的元素,则用于覆盖filename中存储的顶层对象的属性,而filename中保存的原值将存储在old_prop中。old_prop是一个大小与h匹配的元胞数组;每个元胞包含一个结构,该结构包含在覆盖之前的现有属性名称和值。

另请参阅: openfig, hgsave, struct2hdl.

 
openfig
openfig (filename)
openfig (…, copies)
openfig (…, visibility)
h = openfig (…)

filename读取保存的图形窗口,并返回图形句柄h

默认情况下,filename"Untitled.fig"。如果未指定完整路径,则打开的文件将是加载路径中找到的第一个文件。如果找不到filename且没有扩展名,将在加载路径中搜索第一个扩展名为".fig"".ofig"的文件(按此顺序)。

copies是一个可选输入,指示是否应创建新图形("new"),或是否可以重用现有图形("reuse")。当现有图形的"FileName"属性与指定的输入filename匹配时,可以重用该图形。当图形被重用时,它变为活动图形并显示在其他图形之上。如果图形在屏幕外,则会被重新定位到屏幕上。copies的默认值为"new"

visibility是一个可选输入,指示是否显示图形("visible")或不显示("invisible")。当visibility作为输入提供给openfig时,它将覆盖filename中存储的可见性设置。

另请参阅: open, hgload, savefig, struct2hdl.

 
savefig ()
savefig (h)
savefig (filename)
savefig (h, filename)
savefig (h, filename, "compact")

将图形句柄h指定的图形窗口保存到文件filename

如果未指定,h是由gcf返回的当前图形。

如果未指定,filename设置为"Untitled.fig"。如果filename没有扩展名,则会添加默认扩展名".fig"

如果提供了可选的第三个输入参数"compact",则数据将被压缩以节省更多空间。

另请参阅: hgsave, hdl2struct, openfig.


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2