Manipulación de la relación del aspecto de los datos
Propiedades de la relación del aspecto de los ejes
El comando axis
funciona al configurar varias propiedades del objeto de ejes. Puede configurar directamente estas propiedades para alcanzar de forma precisa el efecto que desea.
Propiedad | Descripción |
---|---|
DataAspectRatio | Configura el escalado relativo de los valores de datos de los ejes individuales. Establezca Configurar con |
DataAspectRatioMode | En |
PlotBoxAspectRatio | Configura las proporciones del cuadro de la gráfica de los ejes (establezca Configurar con |
PlotBoxAspectRatioMode | En |
Position | Define la ubicación y el tamaño de los ejes con un vector de cuatro elementos: [desplazamiento izquierdo, desplazamiento del botón, ancho, alto]. |
XLim, YLim, ZLim | Establece los límites máximo y mínimo de los respectivos ejes. |
XLimMode , YLimMode , ZLimMode | En |
Cuando se establecen las propiedades del modo en auto
, MATLAB determina de forma automática los valores de todas esas propiedades y, a continuación, ajusta los ejes para que se adapten a la forma de la figura. Puede anular la operación automática de cualquier propiedad especificando un valor para la propiedad o estableciendo su propiedad de modo a manual.
El valor que seleccione para una propiedad determinada depende fundamentalmente del tipo de datos que desea mostrar. Muchos de los datos visualizados con MATLAB son:
Datos numéricos mostrados como gráficas de líneas, diagramas de malla o gráficas especializadas.
Representaciones de objetos reales (p. ej., un vehículo motorizado o una parte de una topografía terrestre)
En el primer caso, es aconsejable seleccionar los límites de los ejes que ofrecen una buena resolución en cada dirección del eje y para rellenar el espacio disponible. Los objetos reales, por otro lado, se tienen que representar de forma precisa y en proporción, independientemente del ángulo de visión.
Los valores predeterminados de las propiedades de MATLAB están diseñado para:
Seleccionar los límites de los ejes para abarcar el intervalo de datos (cuando
XLimMode
,YLimMode
yZLimMode
están establecidos enauto
).Ofrecer la mayor resolución en el espacio disponible al configurar la escala de cada eje de forma independiente (cuando
DataAspectRatioMode
y elPlotBoxAspectRatioMode
están establecido enauto
).Dibujar ejes que se adapten al rectángulo de posición ajustando el
CameraViewAngle
y, a continuación, expandir a relleno los ejes si es necesario.
Selección predeterminada de la relación del aspecto
La propiedad Position
de los ejes especifica la ubicación y las dimensiones de los ejes en la figura. El tercer y cuarto elemento del vector Position
(anchura y altura) definen un rectángulo en el que MATLAB dibuja los ejes. MATLAB ajusta los ejes a este rectángulo.
El valor predeterminado de la propiedad Units
de los ejes está normalizado a las dimensiones de la figura principal. Esto significa que la forma de la ventana de la figura determina la forma del rectángulo de posición. A medida que cambie el tamaño de la ventana de la figura, MATLAB redefinirá el rectángulo de posición para adaptarlo.
sphere set(gcf,'Color',[0.90 0.90 0.90]) set(gca,'BoxStyle','full','Box','on')
Cambiar el tamaño y la forma de la figura provoca un cambio en el tamaño y la forma de los ejes. Los ejes también pueden seleccionar nuevas ubicaciones de marca de graduación del eje.
f = gcf; f.Position(3) = f.Position(3) * 0.67;
Redefinir los ejes para que se adapten a la ventana de la figura puede cambiar la relación de aspecto de la gráfica. MATLAB adapta los ejes para ajustar el rectángulo de posición y, en el proceso, puede desvirtuar la forma. Esto es aconsejable para las gráficas de datos numéricos, pero no para mostrar objetos de manera realista.
Conservación de las proporciones de los ejes con el ajuste del tamaño de la figura
Para conservar una forma determinada, puede especificar el tamaño de los ejes en unidades absolutas, como pulgadas, que son independientes del tamaño de la ventana de la figura. Sin embargo, no es un buen enfoque si está escribiendo un programa de MATLAB que quiere que funcione con una ventana de figura de cualquier tamaño. Un mejor enfoque podría ser especificar la relación de aspecto de los ejes y anular el comportamiento automático de “expandir a relleno”.
En los casos en los que desee una relación de aspecto específica, puede anular la expansión especificando un valor para dichas propiedades de los ejes:
DataAspectRatio
oDataAspectRatioMode
PlotBoxAspectRatio
oPlotBoxAspectRatioMode
CameraViewAngle
oCameraViewAngleMode
Los primeros dos conjuntos de propiedades afectan directamente a la relación de aspecto. Establecer cualquiera de las propiedades de modo en manual desactiva simplemente el comportamiento de “expandir a relleno” al mismo tiempo que se conservan todos los valores de propiedad actuales. En este caso, MATLAB amplía los ejes hasta que una dimensión del rectángulo de posición los limite. Por ejemplo, establezca la propiedad DataAspectRatio
en [1 1 1]
. Establezca también el color de la figura para ver la relación entre la figura y los ejes.
sphere daspect([1 1 1]) set(gca,'BoxStyle','full','Box','on') set(gcf,'Color',[0.90 0.90 0.90])
Cambiar el tamaño y la forma de la figura no cambia la relación de aspecto de los ejes.
f = gcf; f.Position(3) = f.Position(3) * 0.67;
Establecer la propiedad CameraViewAngle
desactiva el comportamiento de “expandir a relleno” y también evita que MATLAB reajuste el tamaño de los ejes si cambia la vista.
Propiedades de la relación del aspecto
Es importante saber cómo interactúan las propiedades unas con otras para obtener los resultados que desea. La DataAspectRatio
, la PlotBoxAspectRatio
y los límites de los ejes x, y y z (propiedades XLim
, YLim
y ZLim
) imponen restricciones en la forma de los ejes.
Relación de aspecto de los datos
La propiedad DataAspectRatio
controla la relación de las escalas de los ejes. Por ejemplo, para mostrar una gráfica de superficie de una expresión matemática, MATLAB selecciona una relación de aspecto de datos que enfatiza los valores de la función:
[X,Y] = meshgrid((-2:.15:2),(-4:.3:4)); Z = X.*exp(-X.^2 - Y.^2); surf(X,Y,Z) set(gca,'BoxStyle','full','Box','on')
La función daspect
devuelve el valor real de la propiedad DataAspectRatio
.
daspect
ans = 1×3
4 8 1
Esto significa que las cuatro unidades de longitud a lo largo del eje x abarca los mismos valores de datos que ocho unidades de longitud a lo largo del eje y y una unidad de longitud en el eje z. Los ejes rellenan el cuadro de la gráfica, que tiene de forma predeterminada una relación de aspecto de [1 1 1]
.
Si desea ver la gráfica de superficie de forma que las magnitudes relativas a lo largo del eje sean iguales las unas respecto a las otras, establezca DataAspectRatio
en [1 1 1]
.
daspect([1 1 1])
Configurar el valor de la propiedad DataAspectRatio
también configura el DataAspectRatioMode
en manual
y anula el comportamiento de "expandir a relleno», de forma que se logra la relación de aspecto especificada.
Representar relación de aspecto del cuadro
Si nos fijamos en el valor de PlotBoxAspectRatio
en la gráfica de la sección anterior, se muestra que ahora se ha tomado del valor anterior de DataAspectRatio
. La función pbaspect
devuelve el valor de PlotBoxAspectRatio
:
pbaspect
ans = 1×3
4 8 1
Observe que MATLAB cambió la escala del cuadro de la gráfica para acomodarla usando el valor de DataAspectRatio
especificado.
La propiedad PlotBoxAspectRatio
controla la forma del cuadro de la gráfica de los ejes. MATLAB establece de forma predeterminada esta propiedad en [1 1 1]
y ajusta la propiedad DataAspectRatio
de forma que las gráficas rellenan el cuadro de la gráfica o hasta que se alcance un límite.
Al establecer el valor de DataAspectRatio
y, por tanto, evitar el cambio, MATLAB modifica en su lugar PlotBoxAspectRatio
.
Si especifica DataAspectRatio
y PlotBoxAspectRatio
, MATLAB se ve forzado a cambiar los límites de los ejes para obedecer las dos restricciones que ya ha definido.
Siguiendo con el ejemplo de la malla, si establece ambas propiedades, MATLAB cambia los límites de los ejes para satisfacer las dos restricciones de los ejes.
daspect([1 1 1]) pbaspect([1 1 1])
Ajuste de los límites de los ejes
Los ejes también tienen propiedades para establecer los límites de los ejes x, y y z. Sin embargo, especificar los límites de los ejes con las propiedades PlotBoxAspectRatio
y DataAspectRatio
limita en exceso los ejes. Por ejemplo, este comando especifica los límites de los ejes que entran en conflicto con el valor de PlotBoxAspectRatio
.
set(gca,'DataAspectRatio',[1 1 1],... 'PlotBoxAspectRatio',[1 1 1],... 'XLim',[-4 4],... 'YLim',[-4 4],... 'ZLim',[-1 1])
Si consulta la relación de aspecto del cuadro de la gráfica, puede ver que el valor de PlotBoxAspectRatio
ha cambiado para adaptarse a los límites de los ejes.
pbaspect
ans = 1×3
4 4 1
Visualización de objetos reales
Si desea mostrar un objeto para que parezca realista, tiene que cambiar los valores predeterminados de MATLAB. Por ejemplo, estos datos definen un objeto de parche con forma de cuña.
vert = [0 0 0; 0 1 0; 1 1 0; 1 0 0; 0 0 1; 0 1 1; 1 1 4; 1 0 4]; fac = [1 2 3 4; 2 6 7 3; 4 3 7 8; 1 5 8 4; 1 2 6 5; 5 6 7 8]; patch('Vertices',vert,'Faces',fac,... 'FaceColor',[0.7 0.7 0.7],'EdgeColor','k') view(3)
Sin embargo, este eje distorsiona la forma real del objeto sólido que definen los datos. Para mostrarlo con las proporciones correctas, configure DataAspectRatio
. Establecer esta propiedad hace que las unidades sean iguales en las direcciones x, y y z y evita que los ejes se extiendan para cubrir el rectángulo de posición, lo que revela la forma real del objeto.
set(gca,'DataAspectRatio',[1 1 1])