Gráficos

21
Gráficos Hay varios comandos para graficar funciones en Matlab. Entre ellas, plot, area, bar, stairs. Empezamos graficando la función usando plot Para esto primero tenemos que definir los valores de x que vamos a usar. Por ejemplo, si queremos usar x=0,1,2,3,...10 hacemos lo siguiente: x = 0:10; A los valores de la función los vamos a guardar en el vector y. Para eso hacemos lo siguiente: Noten que para elevar al cuadrado cada elemento de x es necesario usar la operación .^. Si se usa la operación ^ entre dos vectores lo que se obtiene es el producto escalar entre los dos, como veremos más adelante. y = 2*x.^2 + 3*x - 5; figure plot(x,y)

description

Gráficos

Transcript of Gráficos

Page 1: Gráficos

Gráficos

Hay varios comandos para graficar funciones en Matlab. Entre ellas, plot, area, bar, stairs.

Empezamos graficando la función usando plot

Para esto primero tenemos que definir los valores de x que vamos a usar. Por ejemplo, si queremos usar x=0,1,2,3,...10 hacemos lo siguiente:

x = 0:10;

A los valores de la función los vamos a guardar en el vector y. Para eso hacemos lo siguiente:

Noten que para elevar al cuadrado cada elemento de x es necesario usar la operación .^. Si se usa la operación ^ entre dos vectores lo que se obtiene es el producto escalar entre los dos, como veremos más adelante.

y = 2*x.^2 + 3*x - 5;figureplot(x,y)

Podemos volver a graficar la misma función pero en otro intervalo. Por ejemplo para x entre -5 y 5.

x = -5:5;y = 2*x.^2 + 3*x - 5;plot(x,y,'-+'); % grafica con línea y símbolos

Page 2: Gráficos

Y si queremos usar más puntos para graficar, podemos tomar un vector x con más elementos, por ejemplo:

x = -5:0.2:5; % esto genera un vector que empieza en -5 y va hasta 5 de a pasos de 0.2y = 2*x.^2 + 3*x - 5;plot(x,y,'-+')

Pueden probar repetir la última instrucción reemplazando el uso de plot por area(x,y) ostairs(x,y) para ver qué hace.

Ahora graficamos las siguientes funciones.

Page 3: Gráficos

clear all % borra todas las variables definidas hasta ahora

x = 0.1:0.01:5; % creamos el vector xf = log(x); % crea un vector que en cada componente tiene el logaritmo de cada elemento de |x|.g = exp(x); % lo mismo con la exponencial

plot(x,f); % grafica la función f(x)grid on

Gráficos en MatlabLa Estética de los GráficosMás de un Gráfico en una ventana (Subplot) Cambiando los ejes Agregar Texto

Una de las funciones más importantes en Matlab es la función plot . Plot también parece ser una de las más sencillas funciones para aprender a usar. La sintaxis básica de la función es escribir el siguiente comando en la ventana de comandos del Matlab o en un archivo-m.

plot(x,y)

Este comando ploteará los elementos del vector x en el eje horizontal de una figura, y los elementos del vector y en el eje vertical de la figura. Por defecto, cada vez que se use el comando plot , se borrará la figura que estaba, quedando solo la nueva; discutiremos cómo forzar esto más abajo. Si quisiéramos graficar la sencilla fórmula lineal: y=3x

Deberíamos crear un archivo-m con las siguientes líneas de código: x = 0:0.1:100; y = 3*x; plot(x,y)

lo que generará la figura siguiente,

Page 4: Gráficos

Una cosa a tener en cuenta cuando se usa el comando plot es que los vectores x e y deben ser la misma longitud. La otra dimensión puede variar. Matlab puede graficar un vector 1 x n versus un vector n x 1, ó un vector 1 x n versus una matriz 2 x n , (obtendrá dos líneas), el largo n es el mismo para ambos vectores.

El comando plot puede también usarse con solamente un vector como entrada o parámetro. En ese caso las columnas del vector se grafican versus sus índices (el vector 1:1:n se usará para el eje horizontal). Si el vector de entrada contiene números complejos, Matlab dibuja la parte real de cada elemento (en el eje x) versus la parte imaginaria (en el eje y).

La Estética de los Gráficos

El color y el marcador de un gráfico se pueden cambiar agregando un tercer parámetro (entre apóstrofo 'esto') al comando plot . por ejemplo, para graficar la función de arriba con una línea punteada roja , debería cambiarse el archivo-m a:

x = 0:0.1:100; y = 3*x; plot(x,y,'r:')

Ahora el gráfico se ve:

Page 5: Gráficos

La tercera entrada consiste de uno a tres caracteres que especifican un color y/o o un tipo de marcador. La lista de colores y marcadores es como sigue:

y amarillo . punto m violeta o circulo c celeste x cruz x r rojo + suma g verde - solido b azul * estrella w blanco : punteado k negro -. punto y raya -- a trazos

Se puede graficar más de una función en la misma figura. Digamos que quisiera graficarlas ondas seno y coseno en el mismo conjunto de ejes, usando diferentes colores y marcadores para cada una. Puede usarse el siguiente archivo-m para lograrlo: x = linspace(0,2*pi,50); y = sin(x); z = cos(x); plot(x,y,'r', x,z,'gx')

Obtendrá la figura siguiente de las ondas seno y coseno, con el seno en rojo sólido y el coseno en verde con cruces:

Agregando más juegos de parámetros al comando plot , puede graficar tantas funciones en la misma figura como se quiera . Cuando plotea muchas cosas en

Page 6: Gráficos

el mismo gráfico es útil diferenciar las diferentes funciones mediante color y marcadores. Puede lograrse el mismo efecto usando los comandos hold on y hold off . Una figura como la que se muestra abajo puede generarse mediante el siguiente archivo-m:

x = linspace(0,2*pi,50); y = sin(x); plot(x,y,'r') z = cos(x); hold on plot(x,z,'gx') hold off

Recuerde que siempre que use el comando hold on, todas las figuras serán generadas en un conjunto de ejes, sin borrarse la figura anterior, hasta que se aplique el comando hold off .

Más de un Gráfico en una ventana (Subplot)

En una misma figura puede ponerse más de una línea empleando el comando subplot. El comando subplot le permite separar la figura en tantas figuras como se quiera , y ponerlas todas en una figura. Para usar este comando, Copie la siguiente línea de código e insértela en la ventana de comandos del Matlab o en un archivo-m:

subplot(m,n,p)

Este comando divide la figura en una matriz de m renglones y n columnas, por lo tanto crea mxn gráficos en una figura. TEl p-ésimo gráfico es seleccionado como el gráfico activo (solo hay uno a la vez por figura). Por ejemplo, suponga quisiera ver una senoide, un coseno , y una onda tangente graficadas en la misma figura, pero no en los mismos ejes. El siguiente archivo-m lo hará: x = linspace(0,2*pi,50); y = sin(x); z = cos(x); w = tan(x);

subplot(2,2,1) plot(x,y) subplot(2,2,2) plot(x,z) subplot(2,2,3) plot(x,w)

Page 7: Gráficos

como puede ver, habrá solo tres gráficos , a pesar de haber creado una matriz de 2 x 2 , de 4 subplots. No tiene porqué rellenar todas las subfiguras que ha creado, pero Matlab dejará un lugar para cada figura en la matriz. Pudo haber hecho sencillamente otro gráfico mediante la línea subplot(2,2,4) . Las subplots se ordenan de la misma manera como se lee un libro. La primera subplot está arriba a la izquierda, la siguiente está a su derecha. Cuando todas las columnas de ese renglón están ocupadas, se rellena la columna de la izquierda del próximo renglón de abajo (asumiendo que genera los subplots en el orden 1, 2, 3,..).

Una cosa a notar acerca del comando subplot es que cada comando plot ejecutado después ubicará la figura en la última posición que se especificó en el último comando subplot, borrando la figura que había . Por ejemplo, en el archivo-m previo, si se emitiera un comando plot más tarde en el mismo, éste se graficará en la en la tercera posición en la ventana gráfica, borrando la línea de la tangente. Para resolver este problema, la figura debería ser borrada (usando clf), o debería especificarse una nueva figura (mediante el comando figure).

Cambiando los ejes

Ahora que ha encontrado diversos modos de graficar funciones, puede personalizar sus ploteos para lograr lo que desea. El modo más frecuente de hacerlo es mediante el comando axis. El comando axiscambia los ejes del diagrama actual, de modo que se muestra sólo la parte del eje que se desea. El comando axis se usa ingresando el siguiente comando justo después del comando plot (o cualquier comando que tiene un plot como una de sus salidas):

axis([xmin, xmax, ymin, ymax])

Por ejemplo, suponga querer ver un gráfico de la función y=exp(5t)-1. Si entra lo siguiente al Matlab

Page 8: Gráficos

t=0:0.01:5;y=exp(5*t)-1;plot(t,y)

debería tener la figura siguiente:

Como puede ver, el gráfico tiende a infinito. Atendiendo al eje y (escala: 8e10), es claro que no puede verse mucho en este gráfico. Para tener una mejor idea de lo que está pasando en el ploteo, miremos el primer segundo de esta función. Escriba el siguiente comando en la ventana de comandos del Matlab.

axis([0, 1, 0, 50])

y debería obtener la figura siguiente:

Ahora esta figura es mucho más valiosa. Puede verse más claro lo que pasa cuando la función va hacia infinito. Puede personalizarse los ejes a sus necesidades. Cuando se usa el comando subplot, pueden cambiarse los ejes de cada subplot emitiendo un comando axis antes del próximo comando subplot. Hay más usos del comando axis que puede ver si tipea help axis en la ventana de comandos del Matlab.

Agregar Texto

Page 9: Gráficos

Otra cosa que puede ser importante en sus gráficos es el etiquetado. Puede darle un título al gráfico (con el comando title), etiqueta al eje x (con el comando xlabel), o al eje y (con el comando ylabel), así como incluir texto en la figura presente. Todos los comandos mencionados se emiten luego de ejecutarse el comando plot actual.

Se ubicará un título, centrado, por encima del gráfico con el comando: title('cadena de título'). La etiqueta al eje x se agrega con el comando siguiente: xlabel('cadena para el eje x'). La etiqueta del eje y se emite con el siguiente comando: ylabel('cadena para el eje y').

Más aún, puede incorporarse texto en el mismo gráfico de dos maneras: el comando text y el comando gtext. El primer comando requiere conocer las coordenadas donde quiere ubicar la cadena de texto. El comando es text(xcor,ycor,'textstring'). Para usar el otro comando, no necesita saber las coordenadas exactas. El comando es gtext('textstring'), y entonces sólo mueva la mira en cruz al lugar deseado con el mouse, y haga clic en la posición que quiere que se inserte el texto.

Para mostrarle mejor cómo usar el etiquetado, tome el gráfico de la respuesta al escalón de arriba. Asumiendo que ya ha cambiado los ejes, copiando las líneas siguientes luego del comando axis, se tendrá todas las etiquetas puestas en el gráfico:

title('respuesta al escalón de algo') xlabel('tiempo (seg.)') ylabel('posición, velocidad, o algo así') gtext('etiqueta innecesaria')

El texto "etiqueta innecesaria" se ubicó a la derecha por encima de la posición donde se hace clic. La figura debería verse así:

Otros comandos que pueden usarse con el comando plot son: 

clf (borra el gráfico actual, lo deja en blanco)

Page 10: Gráficos

figure (abre una nueva ventana figure para graficar, y se preserva la figura previa)

close (cierra la ventana de la figura actual) loglog (igual que plot, excepto que ambos ejes se escalan en Log10) semilogx (igual que plot, excepto que el eje x se escala en Log10) semilogy (igual que plot, excepto que el eje y se escala en Log10) grid (agrega una grilla al gráfico)

Está claro que ésta no es un curso completo para graficar con Matlab, pero le debería dar un buen comienzo.

Use el Botón "Atrás" de su Browser para ir a la página previa

8/29/96 JDP

Uso simple del comando

En esta parte vamos a ver como utilizar el comando para representar una matriz o una simple función matemática. 

Vector

Imaginemos un vector v de tamaño n. La función Plot(V) permite trazar el vector v en función del índice n. Por lo tanto, tendremos la representación de las parejas de números (i,V(i)). 

Ejemplo: 

V es un vector que comprende los números reales del 0 al 10 con incrementos de 0.1: 

V=[0:0.1:10]

El tamaño del vector es n=101. 

El comando plot(V) da: 

Page 11: Gráficos

El eje de las abscisas corresponde a los índices y el eje de las ordenadas corresponde a los valores del vector para cada índice. 

Matriz

En este caso, la función plot considerará cada columna de la matriz como un vector independiente y será trazada en función de los índices. 

Ejemplo: 

M=[1:10;21:30]

plot(M)

Page 12: Gráficos

La transpuesta de M es M’: 

plot(M')

Page 13: Gráficos

Vector en función de otro

Es el caso más común. Tan solo hay que definir los dos vectores. El comando plot(V1,V2) permite trazar el vector V2 en función de V1. 

Ejemplo: 

V1=[0:0.01:2*pi];

V2=sin(V1);

V1 comprende los números reales del 1 hasta 2*3.14 con un incremento de 0.01. V2 es el seno del vector V1. 

plot(V1,V2)

Page 14: Gráficos

Otros argumentos del comando

Un tercer argumento puede ser añadido al comando para especificar:

El color de la curva;

La forma de las coordenadas (puntos, triángulos, cuadrados…);

El tipo de trazo (continuo, discontinuo)

Este argumento debe ser especificado entre dos apóstrofos ('). 

Ejemplo: 

V=[1:10];

Para trazar el vector V de color verde y con + en lugar de puntos, el comando será: 

plot(v,'g+')

A continuación una lista de posibles argumentos:

Page 15: Gráficos

Color:

b azul

g verde

r rojo

m magenta

k negro

w blanco

La forma de las coordenadas:

. punto

o circulo

x en x

+ más

* estrella

s cuadrado

d diamante

v triangulo hacia abajo

^ triangulo hacia arriba

< triangulo hacia la izquierda

> triangulo hacia la derecha

p pentagrama

h hexagrama

El tipo de trazo:

- continuo

: discontinuo 1

-. discontinuo 2

-- discontinuo 3

Trazar diversas curvas

En la misma figura y con la misma escala

Es necesario indicarle a Matlab que deseamos poner varias curvas en una misma figura. Si no lo hacemos, reemplazará la curva actual con la nueva curva. 

Ejemplo: 

V1=[0:0.01:2*pi];

V2=sin(V1);

V3=cos(V1);

plot(V1,V2)

para añadir la curva V3 en función de V1, basta utilizar el comando hold on: 

Page 16: Gráficos

hold on

plot(V1,V3,'r')

En la misma figura con dos escalas diferentes

Será necesario dividir la figura en forma de matriz (líneas y columnas). Utilizaremos el comando subplot. 

La sintaxis del comando es subplot(n,m,p) en el que:

m es el numero de líneas

n es el numero de columnas

p es la posición que ocupará la curva actual. Esta posición se encuentra calculando la suma

de la línea y de la columna de la matriz.

Ejemplo: 

V1=[0:0.01:2*pi];

Page 17: Gráficos

V2=sin(V1);

V3=cos(V1);

V4=exp(V1);

V5=-sin(V1);

El código para mostrar las curvas V2,3,4 y 5 en el mismo grafico pero cada una ocupando una zona independiente es el siguiente: 

subplot(2,2,1), plot(V1,V2)

subplot(2,2,2), plot(V1,V3)

subplot(2,2,3), plot(V1,V4)

subplot(2,2,4), plot(V1,V5)

Crear nuevas figuras

El comando figure permite crear nuevas figuras. El siguiente código permite poner las curvas V2, V3 y V4 en una nueva figura, de este modo las antiguas figuras no serán reemplazadas con las nuevas: 

Page 18: Gráficos

plot(V1,V2)

figure

plot(V1,V3)

figure

plot(V1,V4)

Ponerle nombre a la figura

A continuación algunos comandos suplementarios: 

title('texto')

Pone un nombre a la curva 

xlabel('texto')

Pone un nombre al eje de las abscisas 

ylabel('texto')

Pone un nombre al eje de las ordenadas 

text(x,y,'texto')

Muestra un texto en el lugar indicado por las coordenadas (x,y) de acuerdo a la escala de la figura.