exponenta event banner

findobj

Поиск графических объектов с определенными свойствами

Описание

пример

h = findobj возвращает объект graphics root и все его потомки.

пример

h = findobj(prop,value) возвращает все объекты в иерархии, имеющие свои свойства prop установить в значение value.

пример

h = findobj('-not',prop,value) возвращает все объекты, для которых указанное свойство не установлено в указанное значение.

пример

h = findobj(prop1,value1,oper,prop2,value2) применяет логический оператор oper в prop,value пар. Например, h = findobj('LineStyle','--','-and','Marker','o') возвращает все объекты, имеющие стиль пунктирной линии и круглые маркеры.

пример

h = findobj('-regexp',prop,expr) использует регулярное выражение для поиска объектов с определенными значениями свойств. Возвращаются объекты со значениями свойств, удовлетворяющими регулярному выражению.

пример

h = findobj('-property',prop) возвращает все объекты, имеющие указанное свойство.

пример

h = findobj(prop1,value1,...,propN,valueN) возвращает все объекты в иерархии, для которых заданы указанные свойства. Вы можете заменить prop,value пар с другими комбинациями входных аргументов из предыдущих синтаксисов. Например, h = findobj(prop1,value1,'-not',prop2,value2,'-property',prop3) возвращает все объекты, удовлетворяющие этим трем условиям:

  • Объект имеет свойство prop1 установить в значение value1.

  • Объект имеет свойство prop2 значение которого не установлено в value2.

  • Объект имеет свойство prop3.

пример

h = findobj(objhandles,___) ограничивает поиск объектами, перечисленными в objhandles и всех их потомков. Поиск любого из предыдущих синтаксисов можно ограничить.

пример

h = findobj(objhandles,'-depth',d,___) ограничивает поиск объектами, перечисленными в objhandles и их потомков, которые до d уровни ниже в иерархии графических объектов.

пример

h = findobj(objhandles,'flat',___) ограничивает поиск только объектами, перечисленными в objhandles. Поиск объектов-потомков не выполняется. Использование 'flat' тот же самый параметр, что и при использовании '-depth' вариант с d = 0.

Примеры

свернуть все

Удалите все существующие фигуры, а затем создайте график случайных значений.

close all
plot(rand(5))

Figure contains an axes. The axes contains 5 objects of type line.

Возвращает корневой объект графики и все его потомки.

h = findobj
h = 
  8x1 graphics array:

  Root
  Figure    (1)
  Axes
  Line
  Line
  Line
  Line
  Line

Удалите все существующие фигуры и создайте многострочный график.

close all
plot(magic(4))

Figure contains an axes. The axes contains 4 objects of type line.

Возврат всех объектов линии.

h = findobj('Type','line')
h = 
  4x1 Line array:

  Line
  Line
  Line
  Line

Печать девяти синусоидальных волн с пользовательскими цветами и стилями линий.

x = linspace(0,7);
y = ones(length(x),9);
for i = 1:9
    y(:,i) = sin(x-i/5)';
end
plot(x,y)

colororder({'red','green','blue'})
ax = gca;
ax.LineStyleOrder = {'-','--',':'};

Figure contains an axes. The axes contains 9 objects of type line.

Верните сплошную красную линию. Затем измените толщину линии.

h = findobj('Color','red','LineStyle','-')
h = 
  Line with properties:

              Color: [1 0 0]
          LineStyle: '-'
          LineWidth: 0.5000
             Marker: 'none'
         MarkerSize: 6
    MarkerFaceColor: 'none'
              XData: [1x100 double]
              YData: [1x100 double]
              ZData: [1x0 double]

  Show all properties

h.LineWidth = 2;

Figure contains an axes. The axes contains 9 objects of type line.

Создайте многострочный график. Укажите идентификатор для каждого графика.

x = linspace(-1,1);
y1 = x;
plot(x,y1,'Tag','linear')
hold on
y2 = x.^2;
plot(x,y2,'Tag','quadratic')
y3 = exp(x);
plot(x,y3,'Tag','exponential')
y4 = sin(x);
plot(x,y4,'Tag','sinusoidal')
hold off

Figure contains an axes. The axes contains 4 objects of type line.

Найти все объекты, чьи Tag свойство не имеет значение 'linear'.

h1 = findobj('-not','Tag','linear')
h1 = 
  6x1 graphics array:

  Root
  Figure    (1)
  Axes
  Line      (sinusoidal)
  Line      (exponential)
  Line      (quadratic)

Найти все объекты, чьи Tag свойство не имеет значение 'linear' или 'quadratic'.

h2 = findobj('-not',{'Tag','linear','-or','Tag','quadratic'})
h2 = 
  5x1 graphics array:

  Root
  Figure    (1)
  Axes
  Line      (sinusoidal)
  Line      (exponential)

Поиск всех объектов линии, чьи Tag свойство не имеет значение 'linear' или 'quadratic'.

h3 = findobj('Type','line','-not',{'Tag','linear','-or','Tag','quadratic'})
h3 = 
  2x1 Line array:

  Line    (sinusoidal)
  Line    (exponential)

Улучшение читаемости предыдущей инструкции с помощью '-and' и фигурные скобки.

h4 = findobj({'Type','line'},'-and',{'-not',{'Tag','linear','-or','Tag','quadratic'}})
h4 = 
  2x1 Line array:

  Line    (sinusoidal)
  Line    (exponential)

Создайте три графика линий и назначьте идентификатор двум графикам.

x = linspace(-1,1);
y1 = x;
plot(x,y1)
hold on
y2 = x.^2;
plot(x,y2,'Tag','Quadratic')
y3 = exp(x);
plot(x,y3,'Tag','Exponential')
hold off

Figure contains an axes. The axes contains 3 objects of type line.

Найти все объекты, которые не являются пустыми Tag собственность.

h = findobj('-regexp','Tag','[^'']')
h = 
  2x1 Line array:

  Line    (Exponential)
  Line    (Quadratic)

Создайте вектор из четырех значений. Отображение значений с помощью линейного графика, графика площади и гистограммы.

y = [1 5 6 3];
subplot(3,1,1)
plot(y)
subplot(3,1,2)
area(y)
subplot(3,1,3)
bar(y)

Figure contains 3 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type area. Axes 3 contains an object of type bar.

Возврат всех объектов, имеющих BaseValue собственность.

h = findobj('-property','BaseValue')
h = 
  2x1 graphics array:

  Bar
  Area

Создайте график случайных значений, а затем верните все линейные объекты в текущих осях.

plot(rand(5))

Figure contains an axes. The axes contains 5 objects of type line.

h = findobj(gca,'Type','line')
h = 
  5x1 Line array:

  Line
  Line
  Line
  Line
  Line

Использовать h для запроса значений y первого Line объект.

values = h(1).YData
values = 1×5

    0.6557    0.0357    0.8491    0.9340    0.6787

Создайте фигуру с двумя вкладками. Добавьте оси на каждую вкладку, указав родительский контейнер для каждой из них. Постройте график линии на первой вкладке и поверхности на второй вкладке.

figure
tab1 = uitab('Title','Tab1');
ax1 = axes(tab1);
plot(ax1,1:10)

tab2 = uitab('Title','Tab2');
ax2 = axes(tab2);
surf(ax2,peaks)

Figure contains 2 axes and another object of type uitabgroup. Axes 1 contains an object of type surface. Axes 2 contains an object of type line.

Возврат всех объектов текущего рисунка и его потомков.

h = findobj(gcf)
h = 
  8x1 graphics array:

  Figure      (1)
  TabGroup
  Tab         (Tab1)
  Tab         (Tab2)
  Axes
  Axes
  Line
  Surface

Создайте фигуру с двумя вложенными разделителями.

subplot(2,1,1)
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)

subplot(2,1,2)
y2 = sin(5*x);
plot(x,y2)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Найти все объекты на текущем рисунке и его потомках.

h1 = findobj(gcf,'-depth',1)
h1 = 
  3x1 graphics array:

  Figure    (1)
  Axes
  Axes

Найдите все объекты на текущем рисунке и все дочерние объекты, которые до двух уровней ниже в иерархии графических объектов.

h2 = findobj(gcf,'-depth',2)
h2 = 
  5x1 graphics array:

  Figure    (1)
  Axes
  Axes
  Line
  Line

Ограничьте поиск текущей фигурой и текущими осями с помощью 'flat' вариант.

h3 = findobj([gcf,gca],'flat')
h3 = 
  2x1 graphics array:

  Figure    (1)
  Axes

Входные аргументы

свернуть все

Имя свойства, указанное как вектор символа или скаляр строки. Дополнительные сведения см. в разделе Свойства графического объекта.

Пример: 'Tag'

Пример: 'Type'

Значение свойства, указанное как скаляр или массив.

Логический оператор, указанный как '-and', '-or', или '-xor'. Приоритет логического оператора соответствует правилам приоритета MATLAB ®. Дополнительные сведения см. в разделе Приоритет оператора.

Для управления приоритетом оператора, группа prop,value пар в массивах ячеек. Например, найдите все объекты, имеющие Tag свойство имеет значение 'button one' и Color свойство имеет значение, отличное от 'red' или 'blue':

h = findobj('Tag','button one','-and', ...
    '-not',{'Color','red','-or','Color','blue'})

Регулярное выражение, указанное как строковый массив, символьный вектор или массив ячеек символьных векторов. expr может содержать символы, метасимволы, операторы, маркеры и флаги, задающие шаблоны для соответствия в значении свойства. Вы можете использовать expr только если значение свойства является строковым или символьным вектором. Дополнительные сведения о регулярных выражениях см. в разделе regexp.

Объекты для поиска, заданные как массив графических объектов. Если не указать '-depth' или 'flat' опции, findobj поиск объектов во входном массиве objhandles и все их потомки в иерархии графических объектов.

Глубина поиска, заданная как неотрицательное целое число, указывающее количество уровней ниже любого заданного объекта во входном массиве objhandles.

  • d = n - Поиск n уровни иерархии под каждым объектом в objhandles.

  • d = 0 - Поиск только на том же уровне, что и объекты в objhandles. Это эквивалентно заданию 'flat' вариант.

  • d = inf - Поиск на всех уровнях под объектами в objhandles. Это эквивалентно поиску по умолчанию без указания '-depth' или 'flat' варианты.

Совет

  • findobj не возвращает графические объекты, имеющие HandleVisibility свойство имеет значение 'off'. Для возврата всех объектов в иерархии, включая скрытые объекты, используйте findall функция.

  • findobj правильно соответствует любому законному значению свойства. Например, этот код находит все объекты, имеющие Color свойство имеет значение red, r, или [1 0 0]:

    findobj('Color','r')

  • Если графический объект является потомком нескольких объектов, идентифицированных в objhandlesMATLAB выполняет поиск объекта каждый раз findobj сталкивается с его дескриптором. Следовательно, неявные ссылки на графический объект могут привести к множественным возвращениям объекта.

Представлен до R2006a