Функции построения графика возвращают объект или объекты, созданные функцией. Например:
h = plot(1:10);
h
относится к линии, проведенной в графике значений 1 - 10.
Синтаксис dot notation использует переменную объекта и чувствительное к регистру имя свойства, соединенное с точкой (.
) сформировать объектное точечное обозначение имени свойства:
object.PropertyName
Если переменная объекта является нескалярной, используйте индексацию, чтобы относиться к отдельному объекту:
объект (n).PropertyName
Если h
линия, созданная plot
функция, выражение h.Color
значение Color
этой конкретной линии свойство:
h.Color
ans = 0 0.4470 0.7410
Если вы присваиваете значение цвета переменной:
c = h.Color;
Переменная c
двойное.
whos
Name Size Bytes Class c 1x3 24 double h 1x1 112 matlab.graphics.chart.primitive.Line
Можно изменить значение Color
этой линии свойство с оператором присваивания:
h.Color = [0 0 1];
Используйте ссылки свойства записи через точку в выражениях:
meanY = mean(h.YData);
Или изменить значение свойства:
h.LineWidth = h.LineWidth + 0.5;
Сошлитесь на другие объекты, содержавшиеся в свойствах с несколькими точечными ссылками:
h.Annotation.LegendInformation.IconDisplayStyle
ans = on
Установите свойства объектов, содержавшихся в свойствах:
ax = gca;
ax.Title.FontWeight = 'normal';
Графические функции могут возвратить массив объектов. Например:
y = rand(5); h = plot(y); size(h)
ans = 5 1
Доступ к линии, представляющей первый столбец в y
использование индекса массива:
h(1).LineStyle = '--';
Используйте set
функционируйте, чтобы установить LineStyle
из всех линий в массиве:
set(h,'LineStyle','--')
С записью через точку можно использовать индексацию “конца”, чтобы добавить данные к свойствам, которые содержат массивы данных, такие как линия XData
и YData
. Например, этот код обновляет линию XData
и YData
вместе выращивать линию. Необходимо гарантировать размер x-линии, и y-данные являются тем же самым прежде, чем представить с вызовом drawnow
или возврат подсказке MATLAB®.
h = plot(1:10); for k = 1:5 h.XData(end + 1) = h.XData(end) + k; h.YData(end + 1) = h.YData(end) + k; drawnow end
Переменными объекта, возвращенными графическими функциями, является handles. Указатели являются ссылками на фактические объекты. Переменные объекта, которые являются указателями, ведут себя в особенных методах, когда скопировано и когда объект удален.
Например, создайте график с одной линией:
h = plot(1:10);
Теперь скопируйте переменную объекта в другую переменную и установите значение свойства с новой переменной объекта:
h2 = h; h2.Color = [1,0,0]
Присвоение переменной объекта h
к h2
создает копию указателя, но не объект, упомянутый переменной. Значение Color
к свойству получают доступ от переменной h
эквивалентен, который получил доступ от переменной h2
.
h.Color
ans = 1 0 0
h
и h2
обратитесь к тому же объекту. Копирование переменной объекта указателя не копирует объект.
Существует теперь две переменные объекта в рабочей области, которые относятся к той же линии.
whos
Name Size Bytes Class h 1x1 112 matlab.graphics.chart.primitive.Line h2 1x1 112 matlab.graphics.chart.primitive.Line
Теперь закройте фигуру, содержащую линейный график:
close gcf
Объект линии больше не существует, но переменные объекта, которые упомянули линию, действительно все еще существуют:
whos
Name Size Bytes Class h 1x1 112 matlab.graphics.chart.primitive.Line h2 1x1 112 matlab.graphics.chart.primitive.Line
Однако переменные объекта больше не действительны:
h.Color
Invalid or deleted object.
h2.Color = 'blue'
Invalid or deleted object.
Чтобы удалить переменные недопустимого объекта, использовать clear
:
clear h h2
Чтобы видеть, что содержат свойства объект, используйте get
функция:
get(h)
MATLAB возвращает список свойств объектов и их текущих значений:
AlignVertexCenters: 'off' Annotation: [1x1 matlab.graphics.eventdata.Annotation] BeingDeleted: 'off' BusyAction: 'queue' ButtonDownFcn: '' Children: [] Clipping: 'on' Color: [0 0.4470 0.7410] ... LineStyle: '-' LineWidth: 0.5000 Marker: 'none' ...
Вы видите значения для свойств с перечислимым набором возможных значений с помощью set
функция:
set(h,'LineStyle')
'-' '--' ':' '-.' 'none'
Чтобы отобразить все устанавливаемые свойства включая возможные значения для свойств с перечислимым множеством значений, используйте set
с переменной объекта:
set(h)
Можно также получить доступ и изменить свойства с помощью set
и get
функции.
Базовый синтаксис для того, чтобы установить значение свойства на существующем объекте:
set(object,'PropertyName',NewPropertyValue)
Чтобы запросить текущее значение свойства конкретного объекта, используйте оператор формы:
returned_value = get(object,'PropertyName');
Имена свойства всегда являются векторами символов. Можно использовать одинарные кавычки или переменную, которая является вектором символов. Значения свойств зависят от конкретного свойства.
Если объектный аргумент является массивом, MATLAB устанавливает заданное значение на всех идентифицированных объектах. Например:
y = rand(5); h = plot(y);
Установите все линии на красный:
set(h,'Color','red')
Чтобы установить те же свойства в ряде объектов, задайте имена свойства и значения свойств с помощью массива структур или массива ячеек. Например, задайте структуру, чтобы установить свойства осей соответственно отображать конкретный график:
view1.CameraViewAngleMode = 'manual'; view1.DataAspectRatio = [1 1 1]; view1.Projection = 'Perspective';
Чтобы установить эти значения на текущей системе координат, введите:
set(gca,view1)
Можно задать массив ячеек имен свойства и использовать его, чтобы получить значения для тех свойств. Например, предположите, что вы хотите запросить значения свойств “режима камеры” осей. Во-первых, задайте массив ячеек:
camModes = {'CameraPositionMode','CameraTargetMode',... 'CameraUpVectorMode','CameraViewAngleMode'};
Используйте этот массив ячеек в качестве аргумента, чтобы получить текущие значения этих свойств:
get(gca,camModes)
ans = 'auto' 'auto' 'auto' 'auto'