Функции построения графиков возвращают объект или объекты, созданные функцией. Например:
h = plot(1:10);
h относится к прямой, построенной на графике значений от 1 до 10.
Синтаксис нотации точек использует переменную объекта и имя свойства с учетом регистра, связанное с точкой (.) для формирования нотации имени свойства точки объекта:
объект. 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','--')
С помощью точечной нотации можно использовать индексирование «end» для добавления данных к свойствам, содержащим массивы данных, например строки. 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
Переменные объекта, возвращаемые графическими функциями, являются дескрипторами. Маркеры - это ссылки на фактические объекты. Переменные объекта, являющиеся дескрипторами, ведут себя определенным образом при копировании и удалении объекта.
Например, создайте график с одной линией:
h = plot(1:10);
Скопируйте переменную объекта в другую переменную и задайте значение свойства с помощью новой переменной объекта:
h2 = h; h2.Color = [1,0,0]
Назначение переменной объекта h кому h2 создает копию дескриптора, но не объект, на который ссылается переменная. Значение Color свойство, доступное из переменной h тот же, что и доступ из переменной h2.
h.Color
ans =
1 0 0h и 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)
Можно определить массив ячеек имен свойств и использовать его для получения значений этих свойств. Например, предположим, что требуется запросить значения свойств «camera mode» для осей. Сначала определите массив ячеек:
camModes = {'CameraPositionMode','CameraTargetMode',...
'CameraUpVectorMode','CameraViewAngleMode'};Используйте этот массив ячеек в качестве аргумента для получения текущих значений следующих свойств:
get(gca,camModes)
ans =
'auto' 'auto' 'auto' 'auto'