findobj

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

Описание

пример

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

пример

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' и a 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