Main Content

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 DataAspectRatio en [1 1 1] para mostrar objetos reales en las proporciones adecuadas. Especificar un valor para DataAspectRatio anula el comportamiento de “expandir a relleno”.

Configurar con daspect

DataAspectRatioMode

En auto, el software de MATLAB® selecciona las escalas de los ejes que ofrecen la mayor resolución en el espacio disponible.

PlotBoxAspectRatio

Configura las proporciones del cuadro de la gráfica de los ejes (establezca box en on para ver el cuadro). Especificar un valor para PlotBoxAspectRatio anula el comportamiento de “expandir a relleno”.

Configurar con pbaspect

PlotBoxAspectRatioMode

En auto, MATLAB establece PlotBoxAspectRatio en [1 1 1] a menos que configure de forma explícita DataAspectRatio y/o los límites de los ejes.

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 auto, MATLAB selecciona los límites de los ejes.

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 y ZLimMode están establecidos en auto).

  • Ofrecer la mayor resolución en el espacio disponible al configurar la escala de cada eje de forma independiente (cuando DataAspectRatioMode y el PlotBoxAspectRatioMode están establecido en auto).

  • 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')

Figure contains an axes object. The axes object contains an object of type surface.

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;

Figure contains an axes object. The axes object contains an object of type surface.

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 o DataAspectRatioMode

  • PlotBoxAspectRatio o PlotBoxAspectRatioMode

  • CameraViewAngle o CameraViewAngleMode

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])

Figure contains an axes object. The axes object contains an object of type surface.

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;

Figure contains an axes object. The axes object contains an object of type surface.

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')

Figure contains an axes object. The axes object contains an object of type surface.

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])

Figure contains an axes object. The axes object contains an object of type surface.

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])

Figure contains an axes object. The axes object contains an object of type surface.

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])

Figure contains an axes object. The axes object contains an object of type surface.

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)

Figure contains an axes object. The axes object contains an object of type patch.

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])

Figure contains an axes object. The axes object contains an object of type patch.