Dado un mango de una trama secundaria, ¿cómo obtener todos sus manijas de barra de color asociadas?

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

Pregunta

Tome el código de siguiente, por ejemplo:

Hsp=subplot(1,2,1);

image(rand(5,5));

Hc=colorbar;

subplot(1,2,2);

image(rand(5,6));

colorbar;

Mi pregunta es cómo obtener Hc, solo dado Hsp.

Como se sabe, el tipo de barra de color es axes. Así que traté de buscar a todos los niños de la trama secundaria.

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

Pero, no hay valor en Hs que coincide Hc.

¿Fue útil?

Solución

Sus barras de color son hijos de la figura, no de sus ejes de la trama de la trama (las barras de color son ejes). Probar

hc = get(hf, 'children')

Para obtener una lista de todos los hijos de la figura, donde hf es el mango de la figura. No estoy seguro de cómo lo harías con qué elemento de hc es igual a tu Hc, es decir, que es el first barra de color.

Editar:

Si necesita usar el mango de un objeto más adelante, es mejor asignarlo a una variable cuando se crea y usar esa variable en todo momento.

Sin embargo, si no quieres hacer esto (aunque te recomiendo que lo hagas), puedo pensar en dos cosas que puedes hacer. No son particularmente elegantes y definitivamente son más trabajo que solo asignan su mango de objeto a una variable.

Si conoce el orden en que se crearon los ejes, entonces está de suerte: en la lista si los niños, el primer niño creado es el ultimo Elemento en la lista y el último niño creado es el primero. Por ejemplo,

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

Como desea la primera barra de color, que fue el segundo niño creado, luego puede usar

hc(end-2)

Alternativamente, al crear la barra de color al que desea referirse en el futuro, establece que es tag propiedad. En el ejemplo anterior, reemplace la línea

hc1 = colorbar;

con

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

Luego puede obtener el mango de este objeto más tarde con

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

Otros consejos

El uso del siguiente script puede encontrar el mango de todas las barras de color que son niños de un ejes. Aquí Ha1 es el mango de los ejes con imagen (por ejemplo, una trama secundaria), Hc1s son las manijas de las barras de color pares de los ejes.

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top