15.2.7 绘图窗口的操作

默认情况下,当输出提示符或等待输入时,Octave 会刷新绘图窗口。drawnow 函数用于更新绘图窗口。

 
drawnow ()
drawnow ("expose")
drawnow (term, file, debug_file)

更新图形窗口及其子对象。

事件队列被刷新,并执行生成的任何回调。

使用可选参数 "expose" 时,仅更新图形对象,不处理其他事件或回调。

drawnow 的第三种调用形式用于调试,且未编制文档。

另请参阅:refresh

只有被修改过的图形才会被更新。refresh 函数也可用于强制更新当前图形,即使它未被修改。

 
refresh ()
refresh (h)

刷新图形,强制重新绘制。

当无参数调用时,重新绘制当前图形。否则,重新绘制具有图形句柄 h 的图形。

另请参阅:drawnow

通常,高级绘图函数如 plotmesh 会调用 newplot 以确定是否应初始化目标坐标轴的状态(默认设置),或者是否应在先前绘图之上绘制后续绘图。要将两个绘制叠加在一起,请使用 hold 函数或手动更改坐标轴的 nextplot 属性。例如:

hold on;
x = -10:0.1:10;
plot (x, sin (x));
plot (x, cos (x));
hold off;

在同一坐标轴上显示正弦波和余弦波。如果保持状态为 off(关闭),则像这样的连续绘图命令将只显示最后一个绘图。

 
newplot ()
newplot (hfig)
newplot (hax)
hax = newplot (…)

准备图形引擎以生成新的绘图。

此函数在所有高级绘图函数的开头被调用,在用户程序中通常不需要。newplot 查询当前图形和坐标轴的 "NextPlot" 字段以确定要执行的操作。

Figure NextPlot行为
"add" (default)向当前图形添加新的图形对象。
"new"创建一个新的图形,并将其设置为当前图形。
"replace" 删除图形的所有子对象,并将所有图形属性重置为默认值。但以下四个属性不重置:Position、Units、PaperPosition、PaperUnits。 此外,无论用户定义的默认值如何,NextPlot 属性都被设置为 "add"。这相当于 clf reset
"replacechildren" 删除所有 HandleVisibility 设置为 "on" 的子对象。 将 NextPlot 属性设置为 "add"。 这通常会清除图形,但保留诸如菜单栏等隐藏对象。这相当于 clf
Axes NextPlot行为
"add"向当前坐标轴添加新的图形对象。这相当于 hold on
"replace" (default) 删除坐标轴的所有子对象,并将所有坐标轴属性重置为默认值。但以下属性不重置:Position、Units。这相当于 cla reset
"replacechildren" 删除所有 HandleVisibility 设置为 "on" 的子对象,但保持坐标轴属性不变, 除了 ColorOrderIndex 和 LineStyleOrderIndex 被设置为 1。 这通常会清除绘图,但保留坐标轴的特殊设置(如对数缩放)。这相当于 cla

如果给出了可选输入 hfighax,则准备指定的图形或坐标轴,而不是当前图形和坐标轴。

可选返回值 hax 是所创建的坐标轴对象(而非图形对象)的图形句柄。

 
hold
hold on
hold off
hold (hax, …)

切换或设置绘图引擎的 "hold" 状态,该状态决定新图形对象是添加到当前绘图还是替换现有对象。

hold on

保留绘图数据和设置,以便后续绘图命令显示在单个图形上。每添加一个新绘图,线条颜色和线条样式都会自动递进。

hold all (已弃用)

等同于 hold on

hold off

恢复默认图形设置,在每次新的绘图命令之前清除图形并重置坐标轴属性(默认值)。

hold

切换当前的保持状态。

当给出了附加参数 hax 时,将修改此坐标轴的保持状态,而不是由 gca 返回的当前坐标轴。

要查询当前的保持状态,请使用 ishold 函数。

另请参阅:isholdclaclfnewplot

 
tf = ishold
tf = ishold (hax)
tf = ishold (hfig)

如果下一个绘图将被添加到当前绘图中,则返回 true;如果在绘制下一个绘图之前将清除绘图设备,则返回 false。

如果第一个参数是坐标轴句柄 hax 或图形句柄 hfig,则对该绘图而非当前绘图进行操作。

另请参阅:holdnewplot

要清除当前图形,请调用 clf 函数。要清除当前坐标轴,请调用 cla 函数。要将当前图形置于窗口堆栈的顶部,请调用 shg 函数。要删除图形对象,请在其句柄上调用 delete。要关闭图形窗口,请调用 close 函数。

 
clf
clf reset
clf (hfig)
clf (hfig, "reset")
h = clf (…)

清除当前图形窗口。

clf 通过删除具有可见句柄(HandleVisibility = "on")的子图形对象来操作。

如果指定了可选参数 "reset",则删除所有子对象(包括具有隐藏句柄的对象),并将所有图形属性重置为默认值。但以下属性不会重置:Position、Units、PaperPosition、PaperUnits。

如果第一个参数 hfig 是一个图形句柄,则对该图形进行操作,而不是对 gcf 返回的当前图形进行操作。

可选返回值 h 是被清除的图形窗口的图形句柄。

另请参阅:claclosedeletereset

 
cla
cla reset
cla (hax)
cla (hax, "reset")

清除当前或指定的(hax)坐标轴对象。

cla 通过删除具有可见句柄(HandleVisibility = "on")的子图形对象来操作。这通常会清除坐标轴上的所有可见对象,但保留坐标轴的限制、刻度标记和标签、相机视图等。此外,通过将坐标轴属性 ColorOrderIndexLineStyleOrderIndex 设置为 1,自动线条着色和样式会被重置。

如果指定了可选参数 "reset",则删除所有子对象(包括具有隐藏句柄的对象),并将所有坐标轴属性重置为默认值。但以下属性不会重置:PositionUnits

如果第一个参数 hax 是一个坐标轴句柄,则对该坐标轴进行操作,而不是对 gca 返回的当前坐标轴进行操作。

另请参阅:clfdeletereset

 
shg

显示图形窗口。

此函数使当前图形可见,并将其放置在所有其他绘图窗口的顶部。

编程说明:shg 相当于 figure (gcf),前提是当前图形存在。

另请参阅:figuredrawnowgcf

 
delete file
delete file1 file2
delete (file)
delete (file1, file2, …)
delete (handle)

删除命名文件或图形句柄。

file 可以包含通配符,例如 *。在同一个函数调用中可以指定多个要删除的文件。

handle 可以是标量或向量图形句柄,指定要删除的对象。

编程说明:删除图形对象是在不清除整个图形的情况下从绘图中移除特征的正确方法。

另请参阅:clfclaunlinkrmdir

 
close
close (h)
close figname
close all
close all hidden
close all force
status = close (…)

关闭图形窗口。

当无参数调用时,关闭当前图形。这相当于 close (gcf)。如果输入 h 是一个图形句柄或图形句柄向量,则关闭 h 中的每个图形。也可以通过名称 figname 指定要关闭的图形,该名称将与所有图形的 "Name" 属性进行匹配。

如果给出了参数 "all",则关闭所有具有可见句柄(HandleVisibility = "on")的图形。

如果给出了附加参数 "hidden",则关闭所有图形,包括隐藏的图形。

如果给出了附加参数 "force",则即使 "closerequestfcn" 已被更改以防止关闭窗口,图形也会被强制关闭。

如果请求了可选输出 status,则当图形窗口成功关闭时 Octave 返回 1。

实现说明:close 通过将句柄 h 设置为当前图形,然后调用由图形的 "closerequestfcn" 属性指定的函数来操作。默认情况下,使用函数 closereq。调用的函数可能会延迟或中止删除图形。要在不执行任何回调函数的情况下删除图形,请使用 delete。在编写关闭窗口的回调函数时,不要使用 close 以避免递归。

另请参阅:closereqdelete

 
closereq ()

关闭当前图形并删除与其关联的所有图形对象。

默认情况下,新绘图图形的 "closerequestfcn" 属性指向此函数。

另请参阅:closedelete


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

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