15.3.2.1创建图形对象

你可以创建任何图形对象基元通过调用与该对象同名的函数;换句话说,figureaxeslinetextimagepatchsurface,和light函数。这些基本图形对象会自动成为当前轴对象的子对象,就好像hold on已启用一样。此外,轴将自动成为当前图形对象的子对象,图形将成为根对象的子对象。

如果你想要创建一个图形对象但不自动将它加入到当前轴中,你可以使用newplot函数来准备一个新的图形和轴用于绘图。否则,更简单的方法是调用一个高级图形例程,它既创建图形又用低级图形对象填充它。例如,不要调用line,而是使用plot。或者使用surf代替surface。或者使用fillfill3代替patch

 
axes ()
axes (property, value, …)
axes (hpar, property, value, …)
axes (hax)
h = axes (…)

创建一个笛卡尔坐标轴对象并返回其句柄,或者将当前轴设置为hax

如果不带任何参数调用,或者带有property/value对,则构造一个新的轴。可选参数hpar是一个图形句柄,指定新轴的父对象,可以是图形、uipanel或uitab。

如果带一个轴句柄参数hax调用该函数,则该函数将使 hax成为当前轴(由gca返回)。它还使包含hax的图形成为当前图形(由 gcf返回)。最后,它重新排列父对象的children 属性,以便轴hax出现在列表中的所有其他轴句柄之前。这会导致hax显示在任何其他轴对象的顶部(Z顺序堆叠)。此外,它还重新排列与hax关联的

注意:完整的属性文档详见 Axes Properties.

详见: gca, set, get.

 
line ()
line (x, y)
line (x, y, z)
line ("xdata", x, "ydata", y)
line ("xdata", x, "ydata", y, "zdata", z)
line (…, property, value)
line (hax, …)
h = line (…)

创建一个线对象,从xy(或z),然后插入当前轴中。

在标准的调用方式中,数据xyz可以是 标量、向量、或矩阵。在矩阵输入的情况下,line将尝试确定标量和向量的方向,以便结果可以被绘制。这要求向量的一个维度匹配矩阵的行数或列数。

在底层调用方式(性能提高50%)中,数据由名称指定(line ("xdata", x, …))时,数据必须是向量。如果没有指定数据(line ()),则 x == y = [0, 1].

可以用多个键值对设置线对象的属性,但它们必须成对出现。

如果只使用property/value对调用,那么任何未指定的键都会使用默认值,这些默认值是从根对象指定的。

如果第一个参数hax是一个轴句柄,那么线对象将被插入到该轴中,而不是插入到由gca返回的当前轴中。

可选的返回值h是创建的线对象的图形句柄(或句柄向量)。

注意:完整的属性文档详见 Line Properties.

函数lineplot不同,后者在绘制之前会清除当前轴。

详见: image, patch, rectangle, surface, text.

 
patch ()
patch (x, y, c)
patch (x, y, z, c)
patch ("Faces", faces, "Vertices", verts, …)
patch (…, "prop", val, …)
patch (…, propstruct, …)
patch (hax, …)
h = patch (…)

在当前的轴中创建补丁对象,其顶点位于位置 (x, y),颜色为c

如果顶点是MxN的矩阵,那么每个多边形补丁有M个顶点,并且将创建N个多边形。如果某些多边形没有M个顶点,则使用NaN表示“无顶点”。如果存在z输入,则将创建3-D补丁。

颜色参数c可以采用多种形式。要创建具有单一颜色的多边形,请使用字符串值(例如,"r"表示红色),标量值,该值由clim缩放并索引到当前的颜色映射表中,或者使用具有真彩色的3元素RGB向量。

如果c是一个长度为N的向量,那么第i个多边形将具有颜色由缩放条目c(i)根据clim然后索引到当前的颜色映射表中确定。更复杂的着色情况需要直接操作补丁属性/值对。

除了指定多边形矩阵xy之外,还可以提供唯一的顶点列表,然后是由这些顶点创建的多边形面的列表。在这种情况下,"Vertices"矩阵将是Nx2(2-D补丁)或Nx3(3-D补丁)。MxN的"Faces"矩阵描述了具有N个顶点的M个多边形——每一行描述一个多边形,每一列条目是对"Vertices"矩阵的索引以标识一个顶点。补丁对象可以通过直接传递属性/值对"Vertices"/verts"Faces"/faces作为输入来创建。

除了用键/值对之外,还可以通过传递具有相应字段名称的结构propstruct来设置任何属性。

如果第一个参数hax是一个轴句柄,那么补丁将被插入到该轴中,而不是插入到由gca返回的当前轴中。

可选返回值h是创建的补丁对象的图形句柄。

注意:

  1. 完整的属性文档详见Patch Properties. 有些补丁属性很实用,例如: "edgecolor", "facecolor", "faces", "vertices", 和"facevertexcdata".
  2. 意料之外的几何结果可能会由于混合使用x-y-z和面-顶点形式定义几何而发生。
  3. 意料之外的补丁颜色结果可能会由于混合使用"facevertexcdata"颜色定义与x-y-z定义的几何体而发生。

详见: fill, get, set.

 
surface (x, y, z, c)
surface (x, y, z)
surface (z, c)
surface (z)
surface (…, prop, val, …)
surface (hax, …)
h = surface (…)

创建一个面对象,给定来自meshgrid的矩阵xy以及与 xy坐标对应的值矩阵z

如果xy是向量,那么典型的顶点是 (x(j), y(i), z(i,j))。 因此,z的列对应不同的x值,z的行对应不同的 y值。如果只给出单个输入z,则x取为 1:columns (z)y取为 1:rows (z)

任何键/值输入对都分配给面对象。

如果第一个参数hax是一个轴句柄,那么将绘制到这个轴中,而不是由gca返回的当前轴中。

可选的返回值h是创建的面对象的图形句柄。

注意:完整的属性文档详见 Surface Properties.

详见: surf, mesh, patch, line.

 
light ()
light (…, "prop", val, …)
light (hax, …)
h = light (…)

在当前轴或hax中创建一个光源对象。

当轴对象中存在光源对象,并且"EdgeLighting""FaceLighting"属性的patchsurface对象设置为非 "none"值时,这些对象将以光照效果绘制。照明属性的支持值为 "none"(无光照效果),"flat"(对象的面状外观),和"gouraud" (顶点之间的光照效果的线性插值)。如果照明模式设置为"flat",则使用 "FaceNormals"属性进行照明。对于"gouraud",使用 "VertexNormals"属性。

至多支持每个轴八个光源对象。(依赖于实现)

光源只支持OpenGL图形工具包(即"fltk""qt")。

一个光源对象具有以下属性,这些属性会改变绘图的外观。

"颜色":光源的颜色。可以通过以下代码传递:

RGB向量 (e.g., [1 0 0] 代表红色) 或字符串 (e.g., "r" 代表红色). 默认颜色是白色 ([1 1 1]).

"位置": 光发出的方向。可以通过以下代码传递:

1x3向量。默认的方向是[1 0 1].

广告
"样式": 光如何发出。可以通过以下代码传递:

光源在无限远的位置("infinite") 或从某个定点光源发出 ("local")。默认是"infinite".

广告

如果第一个参数hax是一个轴句柄,那么将光源对象添加到这个轴中,而不是由gca返回的当前轴中。

可选的返回值h是创建的光源对象的图形句柄。

注意: 完整的属性文档详见 Light Properties.

详见: lighting, material, patch, surface.


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

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