为绘图准备图窗和坐标区
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 函数 |
|---|---|
当前图窗中没有坐标区 | 创建坐标区,并使其成为当前坐标区 |
| 使该坐标区成为当前坐标区,并返回其句柄。 |
| 删除坐标区的子对象并使该坐标区成为当前坐标区。 |
| 删除坐标区的子对象、将坐标区的属性重置为其默认值并使该坐标区成为当前坐标区。 |