Учитывая ручку сюжета, как получить все связанные с ними ручки цветов?

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 цветная полоса.

Редактировать:

Если вам нужно использовать рукоятку объекта позже, лучше всего присвоить его переменной, когда он создается, и использовать эту переменную повсюду.

Однако, если вы не хотите этого делать (хотя я настоятельно рекомендую вам это сделать), я могу подумать о двух вещах, которые вы можете сделать. Они не особенно элегантны и определенно больше работы, которые просто присваивают вашу направление объекта с переменной.

Если вы знаете порядок, в котором были созданы оси, вам повезло: в списке, если дети, созданный первым ребенком - это последний элемент в списке, а последний созданный ребенок - это первый. Анкет Например,

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

Поскольку вы хотите первую цвету

hc(end-2)

В качестве альтернативы, при создании цвета, на которую вы хотите ссылаться в будущем, установите его 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