15.2.4 一页上的多个绘图

Octave 可以在一个图形中显示多个绘图。最简单的方法是使用 subplot 函数将绘图区域划分为一系列由整数索引的子图窗口。例如:

subplot (2, 1, 1)
fplot (@sin, [-10, 10]);
subplot (2, 1, 2)
fplot (@cos, [-10, 10]);

这将创建一个具有两个独立坐标轴的图形,一个显示正弦波,另一个显示余弦波。第一次调用 subplot 将图形划分为两个绘图区域(两行一列),并使第一个绘图区域处于活动状态。由 subplot 创建的绘图区域网格按行主序(从左到右、从上到下)编号。绘制正弦波后,下一次调用 subplot 会激活第二个子图区域,但不会重新划分图形。

 
subplot (rows, cols, index)
subplot (rows, cols, index, hax)
subplot (rcn)
subplot (hax)
subplot (…, "align")
subplot (…, "replace")
subplot ("position", pos)
subplot (…, prop, val, …)
hax = subplot (…)

建立一个包含 rowscols 列的子图网格,并将当前绘图坐标轴(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] 范围内归一化。

任何属性/值对都将直接传递给底层坐标轴对象。完整的属性列表请参见 坐标轴属性

任何先前存在的、会被新创建的坐标轴(部分)覆盖的坐标轴都将被删除。

如果请求输出 haxsubplot 将返回该子图的坐标轴句柄。这对于使用 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

另请参阅: axesplotgcaset


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

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