Acceder a los valores de las propiedades
Propiedades de los objetos y notación de puntos
La representación de las funciones devuelve el objeto u objetos creados por la función. Por ejemplo:
h = plot(1:10);
h
se refiere a la línea dibujada en la gráfica de los valores 1 hasta 10.
La sintaxis de notación de puntos utiliza el objeto variable y el nombre de la propiedad, que distingue entre mayúsculas y minúsculas, conectado con un punto (.
) para formar una notación de nombre de propiedad de punto del objeto:
object.PropertyName
Si el objeto variable no es escalar, utilice la indexación para referirse a un solo objeto:
object(n).PropertyName
Variable del objeto escalar
Si h
es la línea creada por la función plot
, la expresión h.Color
es el valor de esta determinada propiedad Color
de la línea:
h.Color
ans = 0 0.4470 0.7410
Si asigna el valor de color a un variable:
c = h.Color;
La variable c
es doble.
whos
Name Size Bytes Class c 1x3 24 double h 1x1 112 matlab.graphics.chart.primitive.Line
Puede cambiar el valor de la propiedad Color
de esta línea con una instrucción de asignación:
h.Color = [0 0 1];
Utilice referencias de propiedad de notación de puntos en expresiones:
meanY = mean(h.YData);
O para cambiar el valor de la propiedad:
h.LineWidth = h.LineWidth + 0.5;
Haga referencia a otros objetos contenidos en propiedades con varias referencias de puntos:
h.Annotation.LegendInformation.IconDisplayStyle
ans = on
Configure las propiedades de los objetos contenidos en las propiedades:
ax = gca;
ax.Title.FontWeight = 'normal';
Variable del objeto no escalar
Las funciones gráficas pueden devolver un arreglo de objetos. Por ejemplo:
y = rand(5); h = plot(y); size(h)
ans = 5 1
Acceda a la línea que representa a la primera columna en y
utilizando el índice de arreglo:
h(1).LineStyle = '--';
Utilice la función set
para configurar la LineStyle
de todas las líneas en el arreglo:
set(h,'LineStyle','--')
Unión de datos a los valores de propiedad
Con la notación de puntos, puede utilizar la indexación "final" para unir datos a las propiedades que contengan arreglos de datos como la línea XData
y YData
. Por ejemplo, este código actualiza la línea XData
y YData
a la vez para aumentar la línea. Debe asegurarse de que el tamaño de los datos x e y de la línea son los mismos antes de la representación con la llamada a drawnow
o volviendo a la línea de comandos 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
Las variables de objetos de gráficas son identificadores
Las variables de objetos devueltas por las funciones de gráficas son identificadores. Los identificadores son referencias a los objetos actuales. Las variables de objetos que son identificadores se comportan de maneras específicas cuando se copian y cuando se elimina el objeto.
Copiar variable del objeto
Por ejemplo, cree una gráfica con una línea:
h = plot(1:10);
Ahora copie la variable del objeto a otra variable y establezca un valor de propiedad con la nueva variable del objeto:
h2 = h; h2.Color = [1,0,0]
La asignación de una variable de objeto h
a h2
crea una copia del identificador, pero no del objeto al que hace referencia la variable. El valor de la propiedad Color
a la que se accede desde la variable h
es la misma a la que se accede desde la variable h2
.
h.Color
ans = 1 0 0
h
y h2
hacen referencia al mismo objeto. La copia de una variable de objeto del identificador no copia el objeto.
Eliminar variables de objetos
Actualmente hay dos variables de objetos en el área de trabajo que hacen referencia a la misma línea.
whos
Name Size Bytes Class h 1x1 112 matlab.graphics.chart.primitive.Line h2 1x1 112 matlab.graphics.chart.primitive.Line
Ahora cierre la figura que contenga la gráfica de líneas:
close gcf
El objeto de línea ya no existe, pero las variables del objeto que hacía referencia a la línea siguen existiendo:
whos
Name Size Bytes Class h 1x1 112 matlab.graphics.chart.primitive.Line h2 1x1 112 matlab.graphics.chart.primitive.Line
Sin embargo, las variables de objetos ya no son válidas:
h.Color
Invalid or deleted object.
h2.Color = 'blue'
Invalid or deleted object.
Para eliminar las variables de objetos no válidas, utilice clear
:
clear h h2
Enumeración de las propiedades de los objetos
Para ver las prioridades que contiene un objeto, utilice la función get
:
get(h)
MATLAB devuelve una lista de las propiedades de objetos y su valor actual:
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' ...
Puede ver los valores de las propiedades con un conjunto enumerado de valores posibles utilizando la función set
:
set(h,'LineStyle')
'-' '--' ':' '-.' 'none'
Para mostrar todas las propiedades configurables incluyendo los valores posibles para las propiedades con un conjunto enumerado de valores, utilice set
con la variable del objeto:
set(h)
Modificar las propiedades con set y get
También puede acceder y modificar las propiedades utilizando las funciones set
y get
.
La sintaxis básica para la configuración del valor de una propiedad en un objeto existente es:
set(object,'PropertyName',NewPropertyValue)
Para consultar el valor actual de una propiedad de objeto específica, utilice una instrucción del formulario:
returned_value = get(object,'PropertyName');
Los nombres de propiedad siempre son vectores de caracteres. Puede utilizar comillas simples o una variable que sea un vector de caracteres. Los valores de propiedad dependen de la propiedad particular.
Operaciones de varios objetos/propiedades
Si el argumento del objeto es un arreglo, MATLAB configura el valor especificado en todos los objetos identificados. Por ejemplo:
y = rand(5); h = plot(y);
Configura todas las líneas en rojo:
set(h,'Color','red')
Para configurar las mismas propiedades en un número de objetos, especifique los nombres y valores de propiedad utilizando un arreglo de estructura o de celdas. Por ejemplo, defina una estructura para configurar las propiedades de los ejes de manera adecuada para mostrar una gráfica en concreto:
view1.CameraViewAngleMode = 'manual'; view1.DataAspectRatio = [1 1 1]; view1.Projection = 'Perspective';
Para configurar estos valores en los ejes actuales, escriba:
set(gca,view1)
Consultar varias propiedades
Puede definir un arreglo de celdas de los nombres de propiedades y utilizarlo para obtener los valores de esas propiedades. Por ejemplo, suponga que desea consultar los valores de las propiedades del "modo cámara" de los ejes. En primer lugar, defina el arreglo de celdas:
camModes = {'CameraPositionMode','CameraTargetMode',... 'CameraUpVectorMode','CameraViewAngleMode'};
Utilice este arreglo de celdas como un argumento para obtener el valor actual de estas propiedades:
get(gca,camModes)
ans = 'auto' 'auto' 'auto' 'auto'