サブプロットのハンドルが与えられた場合、関連するすべてのカラーバーハンドルを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/8849432

質問

次のように、次のコードを考えてみましょう。

Hsp=subplot(1,2,1);

image(rand(5,5));

Hc=colorbar;

subplot(1,2,2);

image(rand(5,6));

colorbar;

私の質問は、どのように入手するかです Hc, 、与えられた Hsp.

知られているように、カラーバーのタイプは axes. 。そこで、サブプロットのすべての子供を検索しようとしました。

Hs=findall(Hsp,'type','axes');

しかし、価値はありません Hs 一致します Hc.

役に立ちましたか?

解決

あなたのカラーバーは、あなたのサブプロット軸ではなく、姿の子供です(カラーバーはそれ自体が軸です)。試す

hc = get(hf, 'children')

人物のすべての子供のリストを取得するには、 hf フィギュアハンドルです。どの要素がどのようになるかわかりません hc あなたと同等です Hc, 、つまり、それは first ColorBar。

編集:

後でオブジェクトのハンドルを使用する必要がある場合は、作成時に変数に割り当てて、その変数を全体に使用することをお勧めします。

ただし、これをやりたくない場合(私はあなたがそうすることを強くお勧めしますが)、私はあなたができる2つのことを考えることができます。それらは特にエレガントではなく、オブジェクトを変数に割り当てるだけで、間違いなくより多くの作業です。

軸が作成された順序を知っている場合、あなたは幸運です:子供がいる場合、最初の子供は 過去 リストの要素と作成された最後の子供は 最初. 。例えば、

hf = figure;

ha1 = subplot(1,2,1);
image(rand(5,5));
hc1 = colorbar;

ha2 = subplot(1,2,2);
image(rand(5,5));
hc2 = colorbar;

hcs = get(hf, 'children')

hcs =

  206.0016
  204.0011
  176.0016
  174.0011

[hc2, ha2, hc1, ha1]'

ans =

  206.0016
  204.0011
  176.0016
  174.0011

2番目の子供である最初のColorBarが必要なので、使用できます

hc(end-2)

あるいは、将来参照したいColorBarを作成するときは、設定してください tag 財産。上記の例では、行を交換します

hc1 = colorbar;

hc1 = colorbar('tag', 'myID');

その後、後でこのオブジェクトにハンドルを取得できます

findobj(hf, 'type', 'axes', 'tag', 'myID')

他のヒント

次のスクリプトを使用すると、軸の子供であるすべてのカラーバーのハンドルを見つけることができます。ここ Ha1 画像のある軸のハンドル(例:サブプロット)、 Hc1s 軸のピアカラーバーのハンドルです。

function Hc1s = find_peer_colorbars_of_an_axes(Ha1)
    Hf = get(Ha1,'parent');
    Haxs = findobj(Hf,'type','axes');
    IsC=false(1,length(Haxs));
    Hc1s=[];

    for i=1:length(Haxs)
        if isa(handle(Haxs(i)),'scribe.colorbar');
            H=handle(Haxs(i));
            if isequal(double(H.axes),Ha1)
                Hc1s=[Hc1s,Haxs(i)];
            end
        end
    end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top