Frage

Nehmen Sie den folgenden Code zum Beispiel:

Hsp=subplot(1,2,1);

image(rand(5,5));

Hc=colorbar;

subplot(1,2,2);

image(rand(5,6));

colorbar;

Meine Frage ist, wie man bekommt Hc, nur gegeben Hsp.

Wie bekannt ist, ist die Art einer Farbleiste axes. Also habe ich versucht, alle Kinder der Nebenhandlung zu durchsuchen.

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

Aber es gibt keinen Wert in Hs was passt Hc.

War es hilfreich?

Lösung

Ihre Farbleisten sind Kinder der Figur, nicht Ihrer Nebenhandlächer (Farbbars sind selbst Achsen). Versuchen

hc = get(hf, 'children')

um eine Liste aller Kinder der Figur zu erhalten, wo hf ist der Figurgriff. Ich bin mir nicht sicher, wie Sie welches Element von hc ist gleich Ihrem Hc, dh das ist das first Farbbalken.

Bearbeiten:

Wenn Sie später den Griff eines Objekts verwenden müssen, ist es am besten, ihn einer Variablen zuzuweisen, wenn sie erstellt wird, und diese Variable überall zu verwenden.

Wenn Sie dies jedoch nicht tun möchten (obwohl ich das dringend empfehle), kann ich mir zwei Dinge vorstellen, die Sie tun können. Sie sind nicht besonders elegant und sind definitiv mehr Arbeit, als nur die Zuweisung Ihres Objekts einer Variablen zugewiesen wird.

Wenn Sie die Reihenfolge kennen, in der die Achsen erstellt wurden, haben Sie Glück: In der Liste, wenn Kinder erstellt wurden, ist das erste Kind das letzte Element in der Liste und das letzte Kind erstellt ist das Erste. Zum Beispiel,

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

Da Sie die erste Farbleiste möchten, die das zweite Kind erstellt wurde, können Sie dann verwenden

hc(end-2)

Alternativ setzen Sie beim Erstellen der Farbleiste, auf die Sie sich in Zukunft beziehen möchten tag Eigentum. Ersetzen Sie im obigen Beispiel die Linie

hc1 = colorbar;

mit

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

Sie können dann den Griff zu diesem Objekt später mit bekommen

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

Andere Tipps

Durch die Verwendung des folgenden Skripts finden Sie den Griff aller Farbbars, die Kinder einer Achsen sind. Hier Ha1 ist der Griff der Achsen mit Bild (z. B. eine Nebenhandlung), Hc1s sind die Griffe der Peer -Farbbars der Achsen.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top