15.3.5 管理默认属性

对象属性有两类默认值:factory defaults(出厂默认值)(初始值)和用户定义的默认值,后者可覆盖出厂默认值。

尽管可以为任何对象设置默认值,但它们是在父对象中设置的,并应用于指定对象类型的子对象。例如,为根(root)对象设置 line 对象的默认 color 属性为 "green",将导致所有 line 对象继承 "green" 作为其 color 属性的默认值。

set (groot, "defaultlinecolor", "green");

设置所有对象的默认线条颜色。构造用于设置默认值的属性名称的规则是

default + object-type + property-name

此规则可能导致一些看起来有点奇怪的名称,例如 "defaultlinelinewidth" 指定了 line 对象的默认 linewidth 属性。

上面的示例使用了根对象,因此默认属性值将应用于所有 line 对象。然而,默认值是分层的,因此在 figure 对象中设置的默认值会覆盖根对象中设置的默认值。同样,在 axes 对象中设置的默认值会覆盖在 figure 或根对象中设置的默认值。例如,

subplot (2, 1, 1);
set (groot, "defaultlinecolor", "red");
set (1, "defaultlinecolor", "green");
set (gca (), "defaultlinecolor", "blue");
line (1:10, rand (1, 10));
subplot (2, 1, 2);
line (1:10, rand (1, 10));
figure (2)
line (1:10, rand (1, 10));

生成了两个图形窗口。第一个图形的第一个子图窗口中的线条是蓝色的,因为它从其父 axes 对象继承了颜色。第一个图形的第二个子图窗口中的线条是绿色的,因为它从其父 figure 对象继承了颜色。第二个图形窗口中的线条是红色的,因为它从全局根对象继承了颜色。

要删除用户定义的默认设置,请将默认属性设置为值 "remove"。例如,

set (gca (), "defaultlinecolor", "remove");

从当前 axes 对象中删除用户定义的默认线条颜色设置。要快速删除所有用户定义的默认值,请使用 reset 函数。

默认情况下,高级绘图函数(如 plot)会独立于默认值重置和重新定义 axes 属性。axes 的 box 属性就是这样一个例子:无论属性 "defaultaxesbox" 为何值,高级二维图形函数都会将其设置为 on。使用 hold 函数可以防止这种行为:

set (groot, "defaultaxesbox", "off");
subplot (2, 1, 1);
plot (1:10)
title ("Box is on anyway")
subplot (2, 1, 2);
hold on
plot (1:10)
title ("Box is off")
 
reset (h)

将图形对象 h 的属性重置为其默认值。

对于 figure,属性 "position""units""windowstyle""paperunits" 不受影响。对于 axes,属性 "position""units" 不受影响。

输入 h 也可以是图形句柄的向量,在这种情况下每个单独的对象都将被重置。

另请参阅: claclfnewplot

获取对象的 "default" 属性会返回为该对象设置的用户定义默认值列表。例如,

get (gca (), "default");

返回当前 axes 对象的用户定义默认值列表。

出厂默认值存储在根对象中。命令

get (groot, "factory");

返回出厂默认值的列表。


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

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