Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Trabajo con objetos gráficos

Objetos gráficos

Los objetos gráficos son los elementos básicos que se utilizan para visualizar gráficas. Estos objetos están organizados en una jerarquía, como se muestra en el siguiente diagrama.

Cuando se llama a una función de representación gráfica, MATLAB® crea la gráfica mediante el uso de diversos objetos gráficos, como la ventana, los ejes, las líneas, el texto de la figura, etc. Cada objeto tiene un conjunto fijo de propiedades, que se pueden usar para controlar el comportamiento y la apariencia de la gráfica.

Por ejemplo, la siguiente instrucción crea un gráfico de barras a partir de los datos de la variable y. Además, establece propiedades sobre la apariencia de las barras:

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,'FaceColor','green','EdgeColor','black','LineWidth',1.5)

Objetos gráficos comunes

Cuando se llama a una función para crear una gráfica, MATLAB crea una jerarquía de objetos gráficos. Por ejemplo, la función plot crea los siguientes objetos gráficos:

  • Figura: ventana que contiene ejes, barras de herramientas, menús, etc.

  • Ejes: sistema de coordenadas que contiene el objeto que representa los datos.

  • Línea: líneas que representan los valores de los datos que se pasan a la función plot.

  • Texto: etiquetas para las marcas de graduación de los ejes, títulos y anotaciones opcionales.

Cada tipo de gráfica utiliza distintos tipos de objetos para representar los datos. Por lo tanto, dado que hay muchos tipos de gráficas, existen muchos tipos de objetos de datos. Algunos se utilizan para fines generales, como líneas y rectángulos, y algunos son altamente especializados, como barras de errores, barras de colores y leyendas.

Acceso a propiedades de objetos

Las funciones de representación gráfica pueden devolver los objetos que se usan para crear el diagrama. Por ejemplo, las siguientes instrucciones crean una gráfica y devuelven el objeto línea creado por la función plot:

x = 1:10;
y = x.^3;
h = plot(x,y);

Use h para establecer las propiedades del objeto línea. Por ejemplo, establezca su propiedad de Color.

h.Color = 'red';

También se pueden especificar las propiedades de la línea cuando se llama a la función de representación gráfica.

h = plot(x,y,'Color','red');

Consulte las propiedades de la línea para ver el valor actual:

h.LineWidth
ans =
	0.5000

Búsqueda de propiedades de un objeto

Para ver las propiedades de un objeto, escriba:

get(h)

MATLAB devuelve una lista de propiedades del objeto con los valores actuales.

Para ver las propiedades de un objeto con información acerca de sus posibles valores, escriba:

set(h)

Configuración de propiedades de objetos

Es posible establecer múltiples propiedades de forma simultánea con la función set.

Configuración de propiedades de objetos existentes

Para establecer la misma propiedad con el mismo valor en varios objetos, use la función set.

Por ejemplo, las siguientes instrucciones representan una matriz de 5 por 5 (con la creación de cinco objetos de línea, uno por columna), y luego establecen la propiedad Marker como cuadrado y la propiedad MarkerFaceColor como verde.

y = magic(5);
h = plot(y);
set(h,'Marker','s','MarkerFaceColor','g')

En este caso, h es un vector que contiene cinco identificadores, uno para cada una de las cinco líneas de la gráfica. La instrucción set establece las propiedades Marker y MarkerFaceColor de todas las líneas con el mismo valor.

Para establecer un valor de propiedad en un objeto, haga una indexación en el arreglo de identificadores:

h(1).LineWidth = 2;

Establecimiento de múltiples valores de propiedades

Si desea establecer las propiedades de cada línea con un valor diferente, puede usar arreglos de celdas para almacenar todos los datos y pasarlos al comando set. Por ejemplo, cree una gráfica y guarde los identificadores de líneas:

figure
y = magic(5);
h = plot(y);

Suponga que desea agregar diferentes marcadores a cada línea y definir que el color de la cara del marcador sea el mismo que el de la línea. Tiene que definir dos arreglos de celdas, uno que contenga los nombres de las propiedades, y otro que contenga los valores deseados para tales propiedades.

El arreglo de celdas prop_name contiene dos elementos:

prop_name(1) = {'Marker'};
prop_name(2) = {'MarkerFaceColor'};

El arreglo de celdas prop_values contiene 10 valores: cinco valores para la propiedad Marker y cinco valores para la propiedad MarkerFaceColor. Observe que prop_values es un arreglo de celdas bidimensional. La primera dimensión indica a qué identificador de h se aplican los valores, y la segunda, a qué propiedad se ha asignado cada valor:

prop_values(1,1) = {'s'};
prop_values(1,2) = {h(1).Color};
prop_values(2,1) = {'d'};
prop_values(2,2) = {h(2).Color};
prop_values(3,1) = {'o'};
prop_values(3,2) = {h(3).Color};
prop_values(4,1) = {'p'};
prop_values(4,2) = {h(4).Color};
prop_values(5,1) = {'h'};
prop_values(5,2) = {h(5).Color};

La propiedad MarkerFaceColor siempre tiene asignado el valor del color de la línea correspondiente (que se obtiene a través de la propiedad Color de la línea).

Una vez definidos los arreglos de celdas, llame a set para especificar los nuevos valores de las propiedades:

set(h,prop_name,prop_values)

Funciones para trabajar con objetos

En esta tabla se enumeran funciones que se usan comúnmente cuando se trabaja con objetos.

Función

Propósito

allchild

Buscar todos los elementos secundarios de los objetos especificados.

ancestor

Buscar el antecesor de un objeto gráfico.

copyobj

Copiar un objeto gráfico.

delete

Eliminar un objeto.

findall

Buscar todos los objetos gráficos (incluidos los identificadores ocultos).

findobj

Buscar los identificadores de objetos que tienen valores de propiedades especificados.

gca

Devolver el identificador de los ejes actuales.

gcf

Devolver el identificador de la figura actual.

gco

Devolver el identificador del objeto actual.

get

Consultar los valores de las propiedades de un objeto.

ishandle

Verdadero para identificadores de objeto válidos.

set

Establecer los valores de las propiedades de un objeto.

Paso de argumentos

Es posible definir funciones especializadas para simplificar la creación de gráficas personalizadas. Mediante la definición de una función, puede pasar funciones de representación gráfica de MATLAB como argumentos.

El siguiente ejemplo muestra una función de MATLAB que evalúa una expresión matemática a lo largo del rango especificado en el argumento de entrada x, y luego representa los resultados. Una segunda llamada a la función plot representa la media mean de los resultados como una línea roja.

La función modifica las marcas del eje y basándose en los valores calculados. Con las etiquetas de los ejes y un título, se finaliza la gráfica personalizada.

function plotFunc(x)
   y = 1.5*cos(x) + 6*exp(-.1*x) + exp(.07*x).*sin(3*x);
   ym = mean(y);
   hfig = figure('Name','Function and Mean');
   hax = axes('Parent',hfig);
   plot(hax,x,y)
   hold on
   plot(hax,[min(x) max(x)],[ym ym],'Color','red')
   hold off
   ylab = hax.YTick;
   new_ylab = sort([ylab, ym]);
   hax.YTick = new_ylab;
   title ('y = 1.5cos(x) + 6e^{-0.1x} + e^{0.07x}sin(3x)')
   xlabel('X Axis')
   ylabel('Y Axis')
end

Defina un valor para el argumento de entrada y llame a la función.

x = -10:.005:40;
plotFunc(x)

Búsqueda de identificadores de objetos existentes

La función findobj permite obtener identificadores de objetos gráficos mediante la búsqueda de objetos con valores particulares de propiedades. Con findobj se pueden especificar los valores de cualquier combinación de propiedades, lo que facilita la selección de un objeto entre muchos. findobj también reconoce expresiones regulares.

Búsqueda de todos los objetos de cierto tipo

Debido a que todos los objetos tienen la propiedad Type que identifica el tipo de objeto, es posible encontrar los identificadores de todas las instancias de un tipo de objeto en particular. Por ejemplo:

h = findobj('Type','patch');

busca los identificadores de todos los objetos de tipo patch.

Búsqueda de objetos con una propiedad en particular

Especifique varias propiedades si quiere limitar la búsqueda. Por ejemplo:

plot(rand(5),'r:')
h = findobj('Type','line','Color','r','LineStyle',':');

busca los identificadores de todas las líneas punteadas rojas.

h = 

  5x1 Line array:

  Line
  Line
  Line
  Line
  Line

Restricción del alcance de la búsqueda

Para especificar el punto de inicio en la jerarquía de objetos, pase el identificador de la figura o ejes iniciales como primer argumento. Por ejemplo:

h = findobj(gca,'Type','text','String','\pi/2');

busca π/2 solo dentro de los ejes actuales.