Main Content

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