Graphics Arrays
Graphics arrays can contain the handles of any graphics objects.
For example, this call to the plot
function returns
an array containing five line object handles:
y = rand(20,5); h = plot(y)
h = 5x1 Line array: Line Line Line Line Line
This array contains only handles to line objects. However, graphics arrays can contain more than one type of graphics object. That is, graphics arrays can be heterogeneous.
For example, you can concatenate the handles of the figure,
axes, and line objects into one array, harray
:
hf = figure; ha = axes; hl = plot(1:10); harray = [hf,ha,hl]
harray = 1x3 graphics array: Figure Axes Line
Graphics arrays follow the same rules as any MATLAB® array. For example, array element dimensions must agree. In this code, plot returns a 5-by-1 Line array:
hf = figure;
ha = axes;
hl = plot(rand(5));
harray = [hf,ha,hl];
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
To form an array, you must transpose hl
:
harray = [hf,ha,hl']
harray = 1x7 graphics array: Figure Axes Line Line Line Line Line
You cannot concatenate numeric data with object handles, with
the exception of the unique identifier specified by the figure Number
property.
For example, if there is an existing figure with its Number
property
set to 1, you can refer to that figure by this number:
figure(1) aHandle = axes; [aHandle,1]
ans = 1x2 graphics array: Axes Figure
The same rules for array formation apply to indexed assignment.
For example, you can build a handle array with a for
loop:
harray = gobjects(1,7); hf = figure; ha = axes; hl = plot(rand(5)); harray(1) = hf; harray(2) = ha; for k = 1:length(hl) harray(k+2) = hl(k); end