La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.
Trabajo con objetos de gráficas
Objetos de gráficas
Los objetos de gráficas 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 de gráficas, 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 una gráfica 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 de gráficas comunes
Cuando se llama a una función para crear una gráfica, MATLAB crea una jerarquía de objetos de gráficas. Por ejemplo, la función plot
crea los siguientes objetos de gráficas:
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 |
---|---|
Buscar todos los elementos secundarios de los objetos especificados. | |
Buscar el antecesor de un objeto de gráficas. | |
Copiar un objeto de gráficas. | |
Eliminar un objeto. | |
Buscar todos los objetos de gráficas (incluidos los identificadores ocultos). | |
Buscar los identificadores de objetos que tienen valores de propiedades especificados. | |
Devolver el identificador de los ejes actuales. | |
Devolver el identificador de la figura actual. | |
Devolver el identificador del objeto actual. | |
Consultar los valores de las propiedades de un objeto. | |
Verdadero para identificadores de objeto válidos. | |
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 de gráficas 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.