findobj

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

Описание

пример

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

пример

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

пример

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 object. The axes object 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 object. The axes object 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 object. The axes object 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: [0 0.0707 0.1414 0.2121 0.2828 0.3535 0.4242 0.4949 ... ]
              YData: [-0.1987 -0.1289 -0.0586 0.0121 0.0827 0.1529 ... ]
              ZData: [1x0 double]

  Show all properties

h.LineWidth = 2;

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object 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 objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type area. Axes object 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 object. The axes object 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 objects and another object of type uitabgroup. Axes object 1 contains an object of type surface. Axes object 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 objects. Axes object 1 contains an object of type line. Axes object 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Значение пары в массивах ячеек. Например, найдите все объекты, которые имеют 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 набор свойств к redR, или [1 0 0]:

    findobj('Color','r')

  • Когда графический объект является потомком больше чем одного объекта, идентифицированного в objhandles, MATLAB ищет объект каждый раз findobj сталкивается с его указателем. Поэтому неявные ссылки на графический объект могут привести к нескольким возвратам объекта.

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