为绘图准备图窗和坐标区
MATLAB 绘图函数的行为
如果没有图窗和坐标区,MATLAB® 绘图函数会创建新的图窗和坐标区,如果有,该函数会重用现有图窗和坐标区。在重用现有坐标区时,MATLAB
从坐标区中清除图形对象。
将大多数坐标区属性重置成默认值。
根据新数据计算新的坐标区范围。
当绘图函数创建图形时,该函数能够:
为绘图创建图窗和坐标区,并为特定图形设置必要的属性(当前图窗不存在时的默认行为)
重用现有图窗和坐标区,根据需要清除和重置坐标区属性(图形存在时的默认行为)
将新数据对象添加到现有图形,而不会重置属性(如果
hold
为on
)
NextPlot
图窗和坐标区属性控制 MATLAB 绘图函数的行为方式。
NextPlot 属性如何控制行为
MATLAB 绘图函数根据图窗和坐标区 NextPlot
属性值确定是否在绘制新图形之前添加、清除或清除并重置图窗和坐标区。低级对象创建函数不检查 NextPlot
属性。它们只是将新图形对象添加到当前图窗和坐标区。
下表总结了 NextPlot
属性的可能值。
NextPlot | 图窗 | 坐标区 |
---|---|---|
| 创建一个新图窗并将其用作当前图窗。 | 不是用于坐标区的选项。 |
| 在不清空或重置当前图窗的前提下添加新的图形对象。(默认值) | 添加新图形对象,而不清除或重置当前坐标区。 |
| 在添加新对象前移除所有句柄未隐藏的坐标区对象。不重置图窗属性。等效于 | 在添加新图形对象前移除所有未隐藏句柄的坐标区子对象。不要重置坐标区属性。等效于 |
| 在添加新对象前移除所有坐标区对象并将图窗属性重置为默认值。等效于 | 在添加新对象前移除所有子对象并将坐标区属性重置为默认值。等效于 |
绘图函数调用 newplot
函数获取适合坐标区的句柄。
默认场景
考虑默认场景,图窗 NextPlot
属性是 add
,坐标区 NextPlot
属性是 replace
。当您调用 newplot
时,它将执行以下操作:
查看当前图窗的
NextPlot
属性值(是add
)。确定 MATLAB 可在当前图窗中绘图而不修改图窗。如果没有当前图窗,
newplot
会创建一个,但不会重新检查其NextPlot
属性。查看当前坐标区的
NextPlot
属性值(是replace
)、从坐标区删除所有图形对象、将所有坐标区属性(除了Position
和Units
)重置为其默认值,并返回当前坐标区的句柄。如果没有当前坐标区,newplot
会创建一个,但不会重新检查其NextPlot
属性。从坐标区删除所有图形对象、将所有坐标区属性(除了
Position
和Units
)重置为其默认值并返回当前坐标区的句柄。如果没有当前坐标区,newplot
会创建一个,但不会重新检查其NextPlot
属性。
hold 函数和 NextPlot 属性
hold
函数可方便地访问 NextPlot
属性。当您想要将对象添加到图形,而同时不移除其他对象或重置属性,可使用 hold on
:
hold on
- 将图窗和坐标区NextPlot
属性设置为add
。线图会继续循环使用ColorOrder
和LineStyleOrder
属性值。hold off
- 将坐标区NextPlot
属性设置为replace
。
使用 ishold
确定 hold
是 on
还是 off
。
用户编写绘图函数的控制行为
MATLAB 提供了 newplot
函数以方便编写符合 NextPlot
属性设置的绘图函数。
newplot
检查 NextPlot
属性的值并根据这些值采取合适的操作。将 newplot
放在所有调用对象创建函数的函数开头。
当您的函数调用 newplot
时,newplot
首先查询图窗 NextPlot
属性。根据属性值,newplot
会采取下表中描述的操作。
图窗 NextPlot 属性值 | newplot 函数 |
---|---|
不存在图窗 | 创建图窗,并使该图窗成为当前图窗。 |
| 使该图窗成为当前图窗。 |
| 创建新图窗,并使其成为当前图窗。 |
| 删除图窗的子对象(坐标区对象及其后代)并使该图窗成为当前图窗。 |
| 删除图窗的子对象,将图窗属性重置为其默认值,并使该图窗成为当前图窗。 |
然后 newplot
检查当前坐标区的 NextPlot
属性。根据属性值,newplot
执行下表中描述的操作。
坐标区 NextPlot 属性值 | newplot 函数 |
---|---|
当前图窗中没有坐标区 | 创建坐标区,并使其成为当前坐标区 |
| 使该坐标区成为当前坐标区,并返回其句柄。 |
| 删除坐标区的子对象并使该坐标区成为当前坐标区。 |
| 删除坐标区的子对象、将坐标区的属性重置为其默认值并使该坐标区成为当前坐标区。 |