Main Content

グラフィックス配列

グラフィックス配列には、グラフィックス オブジェクトのハンドルを格納できます。たとえば、関数 plot の次の呼び出しは、5 つの line オブジェクト ハンドルを含む配列を返します。

y = rand(20,5);
h = plot(y)
h = 

  5x1 Line array:

  Line
  Line
  Line
  Line
  Line

この配列は、line オブジェクトへのハンドルのみを含みます。ただし、グラフィックス配列には複数のタイプのグラフィックス オブジェクトを含めることができます。つまり、グラフィックス配列は異種混合にすることができます。

たとえば、figure オブジェクト、axes オブジェクトおよび line オブジェクトのハンドルを 1 つの配列、harray に連結することができます。

hf = figure;
ha = axes;
hl = plot(1:10);
harray = [hf,ha,hl]
harray = 

  1x3 graphics array:

    Figure    Axes      Line

グラフィックス配列は MATLAB® 配列と同じルールに従います。たとえば、配列の要素の次元は一致しなければなりません。次のコードでは、plot は 5 行 1 列のライン配列を返します。

hf = figure;
ha = axes;
hl = plot(rand(5));
harray = [hf,ha,hl];
Error using horzcat
Dimensions of matrices being concatenated are not consistent.

配列を形成するには、hl を転置しなければなりません。

harray = [hf,ha,hl']
harray = 

  1x7 graphics array:

   Figure    Axes      Line      Line      Line      Line      Line

Figure の Number プロパティに指定された固有の識別子以外の数値データをオブジェクト ハンドルと連結することはできませんたとえば、Number プロパティが 1 に設定された Figure がある場合、その番号によってこの Figure を参照できます。

figure(1)
aHandle = axes;
[aHandle,1]
ans = 

  1x2 graphics array:

    Axes      Figure

配列形成のルールは、インデックス付きの代入にも適用されます。たとえば、for ループを使用して、ハンドル配列を作成できます。

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