Octave 可以在一个图形中显示多个绘图。最简单的方法是使用 subplot 函数将绘图区域划分为一系列由整数索引的子图窗口。例如:
subplot (2, 1, 1) fplot (@sin, [-10, 10]); subplot (2, 1, 2) fplot (@cos, [-10, 10]);
这将创建一个具有两个独立坐标轴的图形,一个显示正弦波,另一个显示余弦波。第一次调用 subplot 将图形划分为两个绘图区域(两行一列),并使第一个绘图区域处于活动状态。由 subplot 创建的绘图区域网格按行主序(从左到右、从上到下)编号。绘制正弦波后,下一次调用 subplot 会激活第二个子图区域,但不会重新划分图形。
(rows, cols, index) ¶(rows, cols, index, hax) ¶(rcn) ¶(hax) ¶(…, "align") ¶(…, "replace") ¶("position", pos) ¶(…, prop, val, …) ¶hax = subplot (…) ¶建立一个包含 rows 行 cols 列的子图网格,并将当前绘图坐标轴(gca)设置为 index 所指定的位置。
如果在(rows, cols, index)参数之后提供了坐标轴句柄 hax,则相应的坐标轴将被转换为一个子图。
如果只提供一个数值参数,则该参数必须是一个三位数,其百位数字表示行数,十位数字表示列数,个位数字表示绘图索引。
绘图索引按行顺序编号:先对一行中的所有列进行编号,然后填充下一行。
例如,一个 2x3 网格的绘图索引如下所示:
+-----+-----+-----+ | 1 | 2 | 3 | +-----+-----+-----+ | 4 | 5 | 6 | +-----+-----+-----+
index 也可以是一个向量。在这种情况下,新坐标轴将包含所指定的多个网格位置。第一个演示程序说明了这一点:
demo ("subplot", 1)
要激活的子图索引也可以通过其坐标轴句柄 hax 来指定,该句柄由之前的 subplot 命令返回。
如果指定了选项 "align",则子窗口的绘图框将对齐,但这可能不会为坐标轴刻度或标签留出空间。
如果指定了选项 "replace",子图坐标轴将被重置,而不仅仅是切换当前坐标轴到所请求的子图。
"position" 属性可用于在当前图形中精确定位子图坐标轴。参数 pos 是一个四元素向量 [x, y, width, height],用于确定坐标轴的位置和大小。pos 中的值在 [0, 1] 范围内归一化。
任何属性/值对都将直接传递给底层坐标轴对象。完整的属性列表请参见 坐标轴属性。
任何先前存在的、会被新创建的坐标轴(部分)覆盖的坐标轴都将被删除。
如果请求输出 hax,subplot 将返回该子图的坐标轴句柄。这对于使用 set 修改子图的属性非常有用。
在某些情况下,subplot 可能无法识别可以重复使用的坐标轴,并可能替换它们。如果需要重复引用 subplot 的坐标轴,建议预先创建并存储它们的坐标轴句柄,而不是反复调用 subplot 来获取相同的位置。
示例:
x = 1:10;
y = rand (16, 10);
for i_plot = 1:4
hax(i_plot) = subplot (2, 2, i_plot);
hold (hax(i_plot), "on");
grid (hax(i_plot), "on");
endfor
for i_loop = 1:2
for i_plot = 1:4
iy = (i_loop - 1)*4 + i_plot;
plotyy (hax(i_plot), x,y(iy,:), x,y(iy+1,:));
endfor
endfor
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4