Main Content

控制图形显示

您可以控制什么

MATLAB® 允许一个会话中同时打开多个图窗窗口。您可以控制 MATLAB 使用哪些图窗和哪些坐标区来显示绘图函数的结果。您还可以控制 MATLAB 清除和重置目标图窗和坐标区的属性的程度。

您可以修改 MATLAB 绘图函数行为方式,您还可以在您编写的绘图函数中实现特定的行为。

考虑如下方面:

  • 您可以防止特定的图窗或坐标区成为显示图形的目标吗?

  • 当您向现有图形绘制更多数据时,图形会出现什么情况?现有图形被取代,还是新图形对象添加到现有图形中?

以特定图窗和坐标区为目标

默认情况下,MATLAB 绘图函数在当前图窗和当前坐标区(分别由 gcfgca返回的对象)中显示图形。您可以通过以下方式将输出指向其他图窗和坐标区:

  • 在绘图函数中显式指定目标坐标区。

  • 使目标坐标区成为当前坐标区。

指定目标坐标区

假设您创建一个包含两个坐标区(分别为 ax1ax2)的图窗。

tiledlayout(1,2)
ax1 = nexttile;
ax2 = nexttile;

调用 plot,以坐标区对象作为第一个参量:

plot(ax1,1:10)

对于不支持将坐标区作为第一个参量的绘图函数,设置 Parent 属性:

t = 0:pi/5:2*pi;
patch(sin(t),cos(t),'y','Parent',ax2)

使目标成为当前对象

要指定目标,可以让图窗成为当前图窗,让此图窗中的坐标区成为当前坐标区。绘图函数默认使用当前图窗和当前坐标区。如果当前图窗没有当前坐标区,那么 MATLAB 会创建一个。

如果 fig 是图窗句柄,则以下语句

figure(fig)
  • 使 fig 成为当前图窗。

  • 重新叠放 fig,使其成为最前面的图窗。

  • 如果 fig 不可见,则使其可见(将 Visible 属性设置为 'on')。

  • 更新图窗显示并处理所有挂起的回调。

同样的行为会应用到坐标区。如果 ax 是坐标区的句柄,则以下语句

axes(ax)
  • 使 ax 成为当前坐标区。

  • 重新叠放 ax,使其成为最前面的坐标区。

  • 如果 ax 不可见,则使其可见。

  • 更新包含此坐标区的图窗并处理所有挂起的回调。

使图窗或坐标区成为当前对象,而不改变其他状态

您可以使图窗或坐标区成为当前对象,而不改变对象状态其他方面。将根 CurrentFigure 属性或图窗对象的 CurrentAxes 设置为您要用作目标的图窗或坐标区的句柄。

如果 fig 是现有图窗的句柄,则以下语句

r = groot;
r.CurrentFigure = fig;

使 fig 成为当前图窗。同样,如果 ax 是坐标区对象的句柄,则以下语句

fig.CurrentAxes = ax;

使其成为当前坐标区,如果 fig 是坐标区的父图窗的句柄。