Учитывая ручку сюжета, как получить все связанные с ними ручки цветов?
Вопрос
Например, принять следующий код:
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