Está en la página 1de 19

Grficos bidimensionales

MATLAB permite crear complejos grficos bidimensionales y


tridimensionales. En esta pgina solamente nos referremos a algunas
representaciones bidimensionales y una breve introducin a las
representaciones tridimensionales.
El comando plot(x,y) se utiliza para crear una representacin grfica
bidimensional, donde x e y son vectores. Cuando se ejecuta este comando se
crea la representacin grfica en una ventanaa denominada Figure Window,
con
un eje horizontal X y otro vertical Y, con etiquetas para el eje X (xlabel) y
para el eje Y (ylabel), un ttulo para el grfico (title).
El comando plot tiene parmetros adicionales que nos permiten especificar el
color y tipo de lnea o los smbolos utilizados como marcadores. Por ejemplo
plot(x,y,'mo','linewidth',2,'markersize',12, 'markeredgecolor','g','markerfacecolor','y')
Los dos primeros parmetros de plot son las coordenadas de los puntos (xi, yi)
contenidos vectores x e y. El tercer parmetro es el especificador de lnea que
puede contener tres datos '-mo' entre comillas simples:

Estilo de lnea (- significa slido, por defecto)

Color de lnea (m significa magenta)

Marcador (o significa crculo)

Las posibles opciones son:


Color

Smbolo

Estilo de lnea

Smbolo

Azul (defecto)

Slido(defecto)

Verde

A puntos

Rojo

raya-punto

-.

Cian

rayas

--

Magenta

Amarillo

Negro

Blanco

Opciones de smbolos para marcar puntos en la grfica


o

crculo

Tringulo (hacia abajo)

punto

Tringulo (hacia arriba)

marca X

<

Tringulo (hacia la izquierda)

ms

>

Tringulo (hacia la derecha)

estrella

pentagrama

cuadrado

hexagrama

diamante

Se pueden tambin especificar las siguientes propiedades entre comillas


simples y a continuacin, sus valores:

linewidth, especifica la anchura de lnea su valor por defecto es 0.5

markersize, especifica el tamao del smbolo que marca los puntos

markeredgecolor, especifica el color de borde del smbolo que marca los


puntos

makerfacecolor, especifica el color de relleno del smbolo que marca los


puntos

Ejemplos de plot:
plot(x,y), una lnea azul slida concecta los puntos (xi, yi)
plot(x,y,'r'), una lnea roja slida conecta los puntos (xi, yi)
plot(x, y,':g'), una lnea de puntos de color verde conecta los puntos (xi, yi)
plot(x,y,'--ro','linewidth',2,'markersize',8), ejemplo ms abajo

Una representacin grfica en una ventana


En un experimento de carga de un condensador se ha medido la diferencia de
potencial V entre las placas del condensador en funcin del tiempo t, desde que
se conecta la batera.
t (s) 0 10 20 30 40 50 60 70 80
V (V) 0.0 0.73 1.10 1.29 1.40 1.46 1.50 1.52 1.53
>>
>>
>>
>>
>>
>>

t=[0 10 20 30 40 50 60 70 80];
V=[0 0.73 1.10 1.29 1.40 1.46 1.50 1.52 1.53];
plot(t,V,'--ro','linewidth',2,'markersize',8)
title('Carga de un condensador')
xlabel('tiempo (s)')
ylabel('Voltaje (V)')

En un experimento de descarga de un condensador se ha medido la diferencia


de potencial V entre las placas del condensador en funcin del tiempo t.
t (s)

10

20

30

40

50

60

70

V (V)

0.82

0.45

0.26

0.15

0.08

0.05

0.03

Crear una tabla de datos y un grfico, similar al de la figura anterior.


Vamos a obtener una tabla de datos de la funcin coseno, utilizando como
argumento grados, cosd(x) y representarla en el intervalo de 0 a 360, tomando
un intervalo de 10
>>
>>
>>
>>
>>
>>
>>

x=0:10:360;
y=cosd(x);
plot(x,y)
grid on %rejilla
title('y=cos(x)')
xlabel('Valores de x')
ylabel('Valores de y')

Creamos un script oscilacion y lo guardamos en el fichero .M para examinar el


papel de los parmetros: frecuencia angular y desfase en un Movimiento
Armnico Simple
A=1.0;

w=input('Frecuencia angular: ');


delta=input('Desfase (rad): ');
t=linspace(0,2*pi,100);
x=A*sin(w*t+delta);
plot(t,x, 'r')
title('Oscilacin')
xlabel('tiempo t')
ylabel('posicin x')

Vamos a la ventana de comandos y corremos el script oscilacion


>> oscilacion
Frecuencia angular: 2
Desfase (rad): pi/2

Obtenemos la representacin grfica de sin(2t+/2)=cos(2t)

Varias grficas en la misma ventana


La ecuacin de una oscilacin amortiguada es
x=Bexp(-t)sin(t+)
donde B y se determinan a partir de las condiciones iniciales
Sea la oscilacin amortiguada
x=5.0exp(-7t)sin(100t+1.5)
Queremos representar a la vez,

El desplazamiento x en funcin del tiempo t

La amplitud A=5.0exp(-7t), en funcin del tiempo t

Ulizamos el comando hold on para representar varias grficas en la misma


ventana. Escribimos el script amortiguadasque guardamos un fichero .M
t=linspace(0,0.7,100);
x=5*exp(-7*t).*sin(100*t+1.5);
A=5*exp(-7*t);
plot(t,x,'r')
hold on
plot(t,A,'b')
plot(t,-A,'b')
hold off
legend('desplazamiento','amplitud')
title('Oscilaciones amortiguadas')
xlabel('tiempo t')
ylabel('posicin x')

En la ventana de comandos corremos el script amortiguadas


>> amortiguadas

Una forma alternativa utilizando el comando plot


t=linspace(0,0.7,100);
x=5*exp(-7*t).*sin(100*t+1.5);
A=5*exp(-7*t);
plot(t,x,'r',t,A,'b',t,-A) % (t,x) en
(t,-A) sigue en azul
legend('desplazamiento','amplitud')
title('Oscilaciones amortiguadas')
xlabel('tiempo t')
ylabel('posicin x')

rojo 'r', (t,A) en azul 'b',

O bien, guardando los datos de la oscilacin amortiguada x y de la


amplitud A (positiva y negativa) en la matriz z.
t=linspace(0,0.7,100);
z=[5*exp(-7*t).*sin(100*t+1.5);5*exp(-7*t);-5*exp(-7*t)];
plot(t,z)
legend('desplazamiento','amplitud')
title('Oscilaciones amortiguadas')
xlabel('tiempo t')
ylabel('posicin x')

Otra forma, utilizando el comando line


t=linspace(0,0.7,100);
x=5*exp(-7*t).*sin(100*t+1.5);
A=5*exp(-7*t);
plot(t,x,'r')
line(t,A,'color','b') %propiedad: 'color', valor: 'b' (azul)
line(t,-A)
legend('desplazamiento','amplitud')
title('Oscilaciones amortiguadas')
xlabel('tiempo t')
ylabel('posicin x')

Los dos primeros parmetros del comando line son los vectores x e y de datos.
Los siguientes son propiedad entre comillas simples, seguido del valor de la
propiedad, por ejemplo:
line(x,y,'linestyle','--','color','r','marker','o')
La difrencia principal entre plot y line, es que plot abre una ventana grfica
cada vez que es ejecutado, mientas que lineaade grficas a la ventana abierta
previamente con plot, como en el script anterior
Decorando las grficas
Ya hemos visto el efecto de xlabel, ylabel, title y legend en el ejemplo anterior
para poner un ttulo a la grfica (title), identificar el eje X (xlabel) el eje Y
(ylabel) y cada una de las grficas en la misma ventana (legend)
El comando legend
El comando legend es ms complejo que los otros comandos y admite la forma
siguiente:
legend('grafica1','grafica2', ..... ,pos)
El orden en el que se ponen las etiquetas corresponde al que se crean las
grficas. En el ejemplo anterior, primero se crea la grfica de la posicin (t,x)
y despus las dos grficas de la amplitud (t,A)
legend('desplazamiento','amplitud')
El ltimo parmetro pos es un nmero opcional que especifica la posicin
de legend en la ventana. Sus posibles valores son: -1, 0, 1, 2 3, 4. El
valor pos=1 es el valor por defecto, y es el que aparece en la figura anterior. Se
sugiere al lector que pruebe el efecto de los otros cinco valores.
El comando axis

Cuando se ejecuta el comando plot(x,y) MATLAB crea un eje X y un eje Y


cuyos lmites se deducen a partir de los valores mximo y mnimo de cada uno
de los vectores x e y.
El comando axis permite cambiar el rango y la apariencia de los ejes
axis([xmin,xmax,ymin,ymax]), establece nuevos lmites a los ejes X e Y
axis equal, establece la misma escala para ambos ejes
axis square, regin cuadrada
axis tight, Ajusta los lmites de los ejes al rango de los datos
El comando grid
grid on,aade una rejilla a la grfica como en la primera figura
grid off, (por defecto) no aade la rejilla
El comando text
Para poner un texto en la figura en la posicin especificada por las
coordendas x e y.
text(x,y,'mensaje')
El primer carcter del texto que se le pasa a text entre comillas simples se pone
en el punto de coordendas (x,y)
El texto que se le pasa a los comandos xlabel, ylabel, title y text, puede
contener caracteres de distinta fuente de texto y tamao, letra en negrita,
cursiva; subndices y superndices, caracteres griegos. El texto incluso se
puede rotar para que aparezca vertical o en otra orientacin. Consultar en el
sistema de ayuda (Help Window) Text y Text Properties para ver el efecto de
las distintas opciones.
Grficos semilogartmicos
Para reprentar la funcin y = 10exp(-2x) en en intervalo de 0 a 3.
>>
>>
>>
>>

x = linspace(0,3);
y = 10*exp(-2*x);
semilogy(x,y);
grid on;

Grficas polares

Las coordenadas polares especifican un punto en trminos


de la distancia (radio) al origenr y el ngulo que forma con el eje X.
La espiral logartmica es una de las curvas notables junto a la catenaria, la
cicloide, etc. La ecuacin de la espiral logartmica en coordenadas polares es
r=r0exp(b)
Donde r0 es el radio inicial, b es un parmetro, y es el ngulo en radianes.
Vase "Viaje de la Tierra a Marte siguiendo una trayectoria en forma de
espiral logartmica".
>> ang=0:pi/18:9*pi/2;
>> r=0.2*exp(0.1*ang);
>> polar(ang,r,'r')

Creamos el script espiral y lo guardamos en el fichero .M para examinar el


papel de los parmetros: radio inicial r0, yparmetro b.
r0=input('Radio inicial: ');
b=input('Parmetro b: ');
ang=0:pi/18:9*pi/2;
r=r0*exp(b*ang);
polar(ang,r,'r')

En la ventana de comandos corremos el script espiral


>> espiral
Radio inicial: 0.4
Parmetro b: 0.05

Hay otra manera de decorar los grficos a travs del 'handle' que devuelven y
empleando la funcin set, cuyo primer argumento es el 'handle' y los
siguientes son los pares 'propiedad', valor. Por ejemplo, si queremos hacer ms
ancho el trazo de la curva escribimos a continuacin del 'handle' gc, la

propiedad 'Linewidth' y su valor 1.5. Se pueden aadir ms propiedades y sus


correspondienets valores.
r0=input('Radio inicial: ');
b=input('Parmetro b: ');
ang=0:pi/18:9*pi/2;
r=r0*exp(b*ang);
gc=polar(ang,r,'r')
set(gc,'Linewidth',1.5).

En Internet se pueden encontrar las ecuaciones de curvas polares como las


cardiodes
r=b+acos
r=b+asin
en los siguientes casos: b<a, a<b<2a, 2ab. El primero es el ms interesante.
Otra curva es la denominada ptalos de una rosa
r=acos(n)
donde n es el nmero entero: 2, 3, 4, 6...
La lemniscata de Bernoulli
r2=2a2cos(2)

Varias zonas grficas en la misma ventana


El comando subplot(m,n,p) divide la ventana grfica Figure Window
en mn ventanas rectangulares grficas ms pequeas dispuestas en forma de
matriz en m filas y n columnas. Cada ventana est numerada de 1 a mn tal
como se indica en la figura.

Por ejemplo el comando subplot(2,3,2) crea seis reas rectangulares ordenadas


en dos filas y tres columnas como se muestra en la figura y hace el rea
marcada en amarillo p=2 como actual.

La posicin velocidad y energa de un oscilador amortiguado son,


respectivamente.
x=Aexp(t)sin(t+)
2=202v=dxdt=Aexp(t)sin(t+)+Aexp(t)cos(t+)E=12mv2+12m20x2=1
2m20A2exp(2t)(10sin(2(0t+)))

Sea un oscilador amortiguado de amplitud A=5.01, fase inicial =1.5 rad,


frecuencia angular natural 0=100 rad/s y constante de amortiguamiento =7
s-1
Creamos el script amortiguadas_1 para
1. Crear cuatro zonas grficas en la misma ventana con el comando subplot
2. Representar en la primera zona, la posicin x en funcin del tiempo t
3. Representar en la segunda, la energa e del oscilador en funcin del tiempo t
4. Representar en la tercera, la velocidad v del mvil en funcin del tiempo t
5. Respresentar en la cuarta, la velocidad del mvil v en funcin de su
posicin x (espacio de las fases)
t=linspace(0,0.7,100);
gamma=7;
w0=100;
fi=1.5;
A=5.01;
w=sqrt(w0*w0-gamma*gamma);
x=A*exp(-gamma*t).*sin(w*t+fi);
v=-gamma*A*exp(-gamma*t).*sin(w*t+fi)+w*A*exp(gamma*t).*cos(w*t+fi);
e=(v.^2+w0*w0*x.^2)/2;
subplot(2,2,1)
plot(t,x)
grid on
xlabel('tiempo (s)')
ylabel('posicin (m)')
subplot(2,2,2)
plot(t,e)
grid on
xlabel('tiempo (s)')
ylabel('energa (J)')
subplot(2,2,3)
plot(t,v)
grid on
xlabel('tiempo (s)')
ylabel('velocidad (m/s)')
subplot(2,2,4)
plot(x,v)
grid on
xlabel('posicin (m)')
ylabel('velocidad (m/s)')

En la ventana de comandos corremos el script amortiguadas_1


>> amortiguadas_1

Varias ventanas grficas


Es posible abrir varias ventanas grficas mediante el comando figure.
MATLAB nombra cada ventana como Figure 1, Figure 2, Figure 3, etc.
Las ventanas grficas se pueden cerrar con el comando close que cierra la
ventana activa, close(n) cierra la ventana n yclose all cierra todas las ventanas
grficas
Creamos el script amortiguadas_2 para abrir cuatro ventanas grficas
1. Representar en la primera, la posicin x en funcin del tiempo t
2. Representar en la segunda, la energa e del oscilador en funcin del tiempo t

3. Representar en la tercera, la velocidad v del mvil en funcin del tiempo t


4. Respresentar en la cuarta, la velocidad del mvil v en funcin de su
posicin x (espacio de las fases)
t=linspace(0,0.7,200);
gamma=7;
w0=100;
fi=1.5;
A=5.01;
w=sqrt(w0*w0-gamma*gamma);
x=A*exp(-gamma*t).*sin(w*t+fi);
v=-gamma*A*exp(-gamma*t).*sin(w*t+fi)+w*A*exp(gamma*t).*cos(w*t+fi);
e=(v.^2+w0*w0*x.^2)/2;
plot(t,x)
grid on
xlabel('tiempo (s)')
ylabel('posicin (m)')
figure
plot(t,e)
grid on
xlabel('tiempo (s)')
ylabel('energa (J)')
figure
plot(t,v)
grid on
xlabel('tiempo (s)')
ylabel('velocidad (m/s)')
figure
plot(x,v)
grid on
xlabel('posicin (m)')
ylabel('velocidad (m/s)')

En la ventana de comandos corremos el script amortiguadas_2


>> amortiguadas_2

nos aparecen cuatro ventanas grficas: Figure 1, Figure 2, Figure 3 y Figure 4.

Una vez examinadas, cerramos todas las ventanas grficas


>> close all

Grficos semilogartmicos
Son tiles cuando hacemos representaciones grficas de funciones
exponenciales o potenciales. Representamos la funcin 10exp(-2x) utilizando
el comando semilogy.
x=linspace(0,3);
y=10*exp(-2*x);
semilogy(x,y)
grid on

Grficos tridimensionales
El mbito de los grficos en general, y de los tridimensionales en particular, es
muy amplio. El lector interesado puede explorar con ms profundidad las
numerosas posibilidades de representacin grfica que ofrece MATLAB, as
como la de utilizar las diferentes opciones del men Figure Window.
Curvas tridimensionales
El caso ms sencillo se presenta cuando x, y y z son funciones de un
parmetro t. Utilizamos el comando plot3 para dibujar la lnea tridimensional.
x=sin(t)
y=cos(t)
z=0.2t
t=0:0.1:6*pi;

x=sin(t);
y=cos(t);
z=0.2*t;
plot3(x,y,z,'b')
grid on
xlabel('x'); ylabel('y'); zlabel('z')

Superficies tridimensionales
Algo ms complicado es mostrar una superficie tridimensional descrita por
una funcin de dos variables z=f(x,y)
El primer paso es crear una rejilla en el plano XY que cubra el dominio de la
funcin y el segundo paso consiste en el clculo del valor de z para cada uno
de los puntos de la rejilla.

En la figura se muestra el conjunto de puntos del plano XY para el dominio 2x3, -1y3 con espaciado de una unidad. Los puntos de la rejilla se
definen mediante dos matrices. La matriz X guarda las abscisas de los puntos y
la matriz Y las ordendas de dichos puntos. La funcin meshgrid de MATLAB
crea la matriz X y la matriz Y.
>> x=-2:3;
>> y=-1:3;
>> [X,Y]=meshgrid(x,y)
X =
-2
-1
0
1
-2
-1
0
1
-2
-1
0
1

2
2
2

3
3
3

-2
-2

-1
-1

0
0

1
1

2
2

3
3

-1
0
1
2
3

-1
0
1
2
3

-1
0
1
2
3

-1
0
1
2
3

-1
0
1
2
3

-1
0
1
2
3

Y =

Se calculan los valores de z=f(x,y) para cada unos de los puntos de la rejilla.
En este caso z=9-x2-y2
>> Z=9-X.^2-Y.^2
Z =
4
7
5
8
4
7
1
4
-4
-1

8
9
8
5
0

7
8
7
4
-1

4
5
4
1
-4

-1
0
-1
-4
-9

Las funciones mesh y surf muestran superficies en tres dimensiones.


Vamos a dibujar la funcin
z=sinrr r=x2+y2

en el dominio el dominio -7x7, -7y7 con espaciado de 0.25. Evitamos a


indeterminacin 0/0 en el origen sumandoeps a r.
[x,y] = meshgrid(-7:0.25:7);
r = sqrt(x.^2 + y.^2) + eps;
z = sin(r)./r;
mesh(x,y,z)
xlabel('x'); ylabel('y'); zlabel('z')

Superficie coloreada. El color de cada elemento de superficie est determinado


por el valor de z y el mapa de colores (una lista ordenda de colores)
[x,y] = meshgrid(-7:0.25:7);
r = sqrt(x.^2 + y.^2) + eps;
z = sin(r)./r;
surf(x,y,z)
colormap hsv
colorbar
xlabel('x'); ylabel('y'); zlabel('z')

Superficies definidas de forma paramtrica


Sea la superficie

x=rcos
y=rsin
z=r
donde 0r1, 02
r=linspace(0,1,30);
angulo=linspace(0,2*pi,30);
[r,angulo]=meshgrid(r,angulo);
x=r.*cos(angulo);
y=r.*sin(angulo);
z=r;
mesh(x,y,z)
xlabel('x-axis'; ylabel('y-axis'); zlabel('z-axis')

También podría gustarte