You are on page 1of 57

Representacin grfica

en Matlab

http://www.mathworks.es/acade
mia/student_center/tutorials/ind
ex.html?s_tid=acmain_lrn_tut
TUTORIALES DE MATLAB

La ventana de grficos
Permite editar
un grfico y
retocar su
aspecto
Hacer zoom
Rotarlo (3D)
Realizar
cculos
Aadir titulos y
leyendas.
Etctera

Representacin grfica
La visualizacin difiere entre Matlab y Octave
>> x = linspace(0,pi,30);
>> y = sin(x);
>> plot(x,y);
>> grid on;
>> hold on;
>> plot(x,exp(-x),'r*')

matlab

GUIoctave

Representacin grfica
Figuras 2D

Representacin grfica
Figuras 3D

Representacin grfica (plot)


plot(xdata1,ydata1,estilo_color, xdata2.);
Dibuja un (o varios) vector frente a otro

>> x = -2:1:2;
>> y = [4 1 0 3 -1];
>> plot (x,y)

Representacin grfica en 2D

Representacin grfica
(plot)

title(ttulo): aade el ttulo


xlabel(etiqueta): aade etiqueta en eje x

Ylabel: funciona igual. ylabel off lo elimina

text (x,y,texto): introduce la cadena texto en las


coordenadas x,y
legend(): define la leyenda de la figura
grid: activa la rejilla
hold on/off: activa/desactiva la incorporacin de nuevas
grficas
Estilo de lneas:

Ejemplos 2D

10

>>x=[0:0.1:2];
>>y=sin(x);
>>y2=cos(x);

>> plot(x,y,'r*-',x,y2,'go--');
1

Grfica: sin( )

1
0.9
0.8

0.5

0.7
0.6
0.5
0.4

0.3
0.2
0.1
0

-0.5

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

>>%Truco para pintar una lnea

>> plot([x,x],[y,y],'k');
>>%Se pueden poner letras griegas y smbolos
%Ver Grficos con Matlab.doc

>> title('Grfica: sin(\alpha


11

Representacin grfica (axis)


Para cambiar las dimensiones de los ejes, insertar el comando axis despus del
comando plot: axis([xmin xmax ymin ymax])
Ejemplo: >> plot(x,exp(-x),'r:*')
>> axis([-1 7 -2 2])

Otros ejemplos:
axis(equal)
axis(square)
axis(normal)
axis(off)

1.5

Restablece los
ejes a los
valores por
defectos.

0.5

Quita el enmarcado.

-0.5

axis([-5 10 inf inf])

-1

-1.5

-2
-1

Establece los limites del eje-y


de forma automtica.

12

Para cambiar las dimensiones de los ejes:

axis([xmin xmax ymin ymax])


o bien:

xlim([xmin xmax])
ylim([ymin ymax])
Comandos para modificar figuras:

title, xlabel, ylabel, legend


sen(x)
exp(-x)

1.5
1
0.5
funcin

>> x=0:.1:2*pi;
y=sin(x);
plot(x,y,'b',x,exp(-x),'r*')
grid on
>> axis([-1 7 -2 2])
>> title('sinusoide y exponencial')
xlabel('x (radianes)')
ylabel('funcin')
legend('sen(x)','exp(-x))

sinusoide y exponencial

0
-0.5
-1
-1.5
-2
-1

3
x (radianes)

13

Representacin grfica (gtext)


Introduce texto con ayuda del ratn: gtext(texto)
Ejemplo:

3
Approximations of sin(t)

>> t=linspace(0,2*pi,100);
>> y1=sin(t); y2=t;
>> y3=t-(t.^3)/6+(t.^5)/120;
>> plot(t,y1,t,y2,'--',t,y3,'o')
>> axis([0 5 -1 5])
>> xlabel('t')
>> ylabel('Approximations of sin(t)')
>> title('Fun with sin(t)')
>> text(3.5,0,'sin(t)')
>> gtext('Linear approximation')
>> gtext('First 3 terms in Taylor series')

Fun with sin(t)

Linear approximation

First 3 terms in Taylor series


1

-1

sin(t)

0.5

1.5

2.5
t

14

3.5

4.5

Representacin grfica
Ejemplos 2D con plot

15

>> x=rand(1,100);
>> y=rand(1,100);
>> plot(x,y,'+')
>> hold on
>> plot(y,x,'g>')
>> text(.5,.5,'punto
medio')
>> gtext('otro punto')

1
otro punto

0.9
0.8
0.7
0.6
0.5

punto medio

0.4
0.3
0.2
0.1
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

16

1
0.8

x = -3*pi:pi/10:3*pi;
y=sin(x)./x
figure
hold on
plot(x,y,'r--','LineWidth',1)
0.6
0.4
0.2

-0.2

-0.4
-10

-8

-6

-4

-2

10
1
0.8
0.6

plot(x,y, 's','LineWidth',2)

0.4
0.2
0
-0.2
-0.4
-10

plot(x,y,'s','LineWidth',2,'MarkerFaceColor','g')

-8

-6

-4

-2

10

0.8
0.6
0.4
0.2
0
-0.2
-0.4
-10

-8

-6

-4

-2

10

17

Representacin grfica
Subplot: varios grficos por figura

Subplot(m,n,p)
El comando subplot subdivide
el grafico en mxn (m-filas y ncolumnas) subventanas y inserta
el grafico en la ventana p.

p=1

p=2

p=3

p=4

p=5

p=6

p=7

p=8

18

Representacin grfica
Subplot: varios grficos por
n de filas
subplot(m,n,p) m: figura
p: m x n
n: n de columnas
El comando subplot subdivide el grfico en mxn (m-filas y ncolumnas) subventanas e inserta el grfico en la ventana p.
1

>> subplot(3,2,1)
>>
plot(1:10,rand(1,10),'b')
>> subplot(3,2,2)
>>
plot(1:10,rand(1,10),'r')
>> subplot(3,2,3)
>>
plot(1:10,rand(1,10),'g')
>> subplot(3,2,6)
>>

p=1

0.5
0

p=2

0.5

10

10

1
0.5
0

p=
3
5

p=4
10
1

p=5

p=6

0.5
0

10

19

Representacin grfica
(fplot y semilogx)
30

Funcin: fplot
Ejemplo: f(t)=t sin t, 0t10

20

10

>> fplot('x.*sin(x)',[0 10*pi])


NOTA: La expresin de la
funcin se escribe como una
variable alfanumrica, es decir
entre apstrofos.

Funcin: semilogx (o semilogy)


Ejemplo: x=e-t , y=t, 0t2
>> t=linspace(0,2*pi,200);
>> x=exp(-t); y=t;
>> semilogx(x,y)
>> grid on

-10

-20

-30

10

15

20

25

30

0 -3
10

-2

10

20

-1

10

10

Representacin grfica
(polar y loglog)
Funcin: loglog
Ejemplo: x=et, y=100+e2t, 0t2

10

10

>> t=linspace(0,2*pi,200);
>> x=exp(t);
>> y=100+exp(2*t);
>> loglog(x,y), grid

10

10

10 0
10

10

Funcin: polar
Ejemplo: r2=2 sin 5t, 0t2

10

90

10

1.5

120

60
1

>> t=linspace(0,2*pi,200);
>> r=sqrt(abs(2*sin(5*t)));
>> polar(t,r)

150

30
0.5

180

210

330

240

300

21

270

Representacin grfica
(stem)
Funcin: stem(X,Y)
Representa los datos Y con una lnea desde el eje x hasta cada punto Y
terminando en un crculo
0.5
0.4

>> x=0:.5:20;
>> y=sin(x)./(x+1);
>> stem(x,y)

0.3
0.2
0.1
0
-0.1
-0.2

10

12

14

16

18

20

22

>>x=[0:0.1:2];
>>y=sin(x);
>> plot(x,y,r-')
>> hold on; stem(x,y);
hold of
>>grid on
1

0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

23

Representacin grfica
(Plotyy)
Permite representar dos grficos en la misma
figura. Los grficos poseen eje x comn y eje y
distinto. Uno a la derecha y otro a la izquierda.
>>
>>
>>
>>
>>

x1=[0:0.1:10];
y1=2*x1.^2+1;
x2=[1:0.2:12];
y2=-2*x2.^2-1;
plotyy(x1,y1,x2,y2)

300

200

-100

100

-200

24

10

-300
12

>>% Partimos del ejemplo pgina 17


>>y2=sin(x)
>>plotyy(x,y,x,y2)
0

-8

-6

-4

-2

-1
10

>>[a]=plotyy(x,y,x,y2)
>> set(get(a(2),'Ylabel'),'String','Funcin seno')
>> set(get(a(1),'Ylabel'),'String','Sin(x)/x')

Sin(x)/x

0.5

0.5

-0.5

-0.5

-1
-10

-8

-6

sin(x)/x

-2

-1
10

figure; [a,b,c] = plotyy(x,y,x,y2);


set(get(a(1),'Ylabel'),'String','sin(x)/x')
set(get(a(2),'Ylabel'),'String','sin(x)')
set(b,'LineStyle','--')
set(c,'LineStyle',':')
0

-1
-10

-4

-8

-6

-4

-2

-1
10

sin(x)

>>
>>
>>
>>
>>

Funcin seno

-1
-10

25

Representacin grfica
(quiver)

Permite representar vectores en el espacio


quiver(x,y,vx,vy), representa el vector de componentes
(vx,vy) en el punto (x,y)
quiver admite como variables de entrada arrays de
posiciones y componentes de vectores
3

>> x=0;
>> y=0;
>> vx=2;
>> vy=3;
>>
quiver(x,y,vx,vy,0)
Use s=0 to plot the arrows
without the automatic
scaling.

2.5
2
1.5
1
0.5
0
-0.5
-1

0.5

1.5

26

2.5

Representacin grfica
(errobar)
Permite aadir barras de error a un grfico
errorbar(x,y,e), representa grficamente los
valores del vector y frente a los del vector x y
aade barras de error de anchura (+e e) (e
debe tener el mismo tamao que x e y)
2

1.5

>>
>>
>>
>>

x = 1:10;
y = sin(x);
e =std(y)*ones(size(x));
errorbar(x,y,e)

0.5
0

-0.5
-1

ERRORBAR(X,Y,L,U)

-1.5
-2

27

10

12

Representacin grfica
(bar)
Funcin: bar
Ejemplo: r2=2 sin 5t, 0t2, y=r sin t
>> t=linspace(0,2*pi,200);
>> r=sqrt(abs(2*sin(5*t)));
>> y=r.*sin(t);
>> bar(t,y)
>> axis([0 pi 0 inf]);

1.4

1.2

0.8

0.6

0.4

0.2

0.5

1.5

28

2.5

Representacin grfica
(area)
Funcin: area
Ejemplo: y=sin(x)/x, -3 x 3

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1

-8

-6

-4

-2

0
x

0.4
0.2
0

sin(x)./x

sin(x)./x

>> x=linspace(-3*pi,3*pi,100);
>> y=-sin(x)./x;
>> area(x,y)
>> xlabel('x'), ylabel('sin(x)./x')
>> hold on
>> x1=x(46:55); y1=y(46:55);
>> area(x1,y1,'facecolor','y')

-0.2
-0.4

> area(x(35:46),y(35:46),'FaceColor','c')
-0.6
-0.8

-1

-8

-6

-4

-2

0
x

29
2

Histogramas

Se usan en Estadstica.

Representan en forma de barras la frecuencia con la


que se repiten los datos.
Cada barra represente un rango

hist(x,m)

x=vector con los datos para los que se quiere calcular el histograma,
3000se divide el rango de valores de x (por
m=nmero de intervalos en que
defecto 10)
2500

>> z=randn(1,10000);
>>hist(z)
>> hist(z,20)

2000

1500

1000

500

0
-4

-3

-2

-1

301

Representacin en una red


en 2-D
1 Crear una matriz malla: meshgrid
LAT

2 Pintar contornos: contour(X,Y,Z)


toma los valores de la matriz Z
como alturas sobre un plano (X,Y)

LON
80
60

>>
>>
>>
>>
>>

LAT=-90:10:90;
LON=0:10:360;
[X,Y]=meshgrid(LON,LAT);
Z=sind(X).*cosd(Y);
contour(X,Y,Z)

40
20
0
-20
-40
-60
-80
0

50

100

150

200

250

30031

350

Representacin grfica
(contour)
Ejemplo:
z=-0.5 x2 +xy+y2, |x| 5, |y| 5
>> r=-5:.2:5;
>> [X,Y]=meshgrid(r,r);
>> Z=-.5*X.^2+X.*Y+Y.^2;
>> cs=contour(X,Y,Z);
>> clabel(cs)

35

30

25

20
15

10
5

2
1

-15
-10

-5
0

-1

-15

-2
-3

-4
-5
-5

35

30
-4

20

25
-3

-2

-1

32

-5

10

15

-10

>> r=-5:.2:5;
>> [X,Y]=meshgrid(r,r);
>> Z=-.5*X.^2+X.*Y+Y.^2;
>> [cs,h]=contour(X,Y,Z);
>> text_handle = clabel(cs,h)
>>

set(text_handle,'BackgroundColor','
y',...
5
'Edgecolor','k')
4

30

>> xlabel(X);ylabel(Y);

1
0
-1
-2
-3
-4

30
-5
-5

-4

-3

-2

-1

0
X

33 5

Resumen grficos 2D

34

Representacin grfica
Grabacin de figuras

35

Representacin grfica
Tipos de figuras (3D)

36

Representacin grfica en 3D
plot3
stem3
bar3
bar3h
pie3
comet3
fill3
contour3
quiver3
scatter3
mesh
meshc
meshz
surf
surfc
surfl
trimesh
trisurf
slice
waterfall

3
2
1
0
-1
-2
-3
3
2
1
0
-1
-2
-3

-3

-2

-1

37

Representacin grfica
(meshgrid)

Ya lo hemos visto.
Los dibujos de superficies se suelen representar
en MatLab utilizando los valores de la variable z
en una malla de puntos (x,y).
Para poder dibujar una superficie debemos, en
primer lugar, generar una malla de (x,y)
coordenadas y calcularnos la altura de la
superficie (es decir, el valor de z) por cada punto
de esta malla. En MatLab hay un comando
llamado meshgrid que permite de generar
una malla de puntos dentro de un rango
[X,Y]=meshgrid(x,y)
especfico de valores
(x,y).
38

Creacin de malla de puntos


(meshgrid)
Malla de 25 puntos en el
plano x,y
>> rx=0:4; %genera un
vector rx=[0 1 2 3 4]

>> ry=-4:2:4; %crea un


vector
ry=[-4 -2 0 2 4]

-2

-4
0

>>[X,Y]=meshgrid(rx,ry);
%crea una red de 25 puntos y
almacena sus coordenadas en
XyY
39

Para poder dibujar una superficie debemos:


1 Generar una malla de (x,y) coordenadas
(meshgrid)

[X,Y]=meshgrid(x,y)

2 Calcularnos la altura de la superficie (es decir,


el valor de z) para cada punto de esta malla.
3 Se representa mediante el comando mesh
Funcin: mesh(X,Y,Z,C)
Dibuja una malla coloreada en 3-D

Si mesh(X,Y,Z), C = Z y el color de la rejilla


es proporcional a la altura.
>> x = -10:0.5:10; y = -10:0.5:10;
>> [X,Y] = meshgrid(x,y); % crea matrices para hacer la malla
>> Z = sin (sqrt (X .^2 + Y .^2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1);
>> mesh(X,Y,Z) % dibuja la grfica

40

Ejemplo 3D
Malla de 25 puntos en el plano x,y
>> rx=0:4;
%genera un vector rx=[0 1 2
3 4]
>> ry=-4:2:4; %crea un vector ry=[-4 -2 0
2 4]
>> [X,Y]=meshgrid(rx,ry);%crea una malla
de 25
%ptos y almacena en
%coordenadas en X e Y

-2
3
2

-4
0

1
0

-1
-2

>> x=linspace(-3,3,50);
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.*(X.^2-Y.^2)./
(X.^2+Y.^2);
>> mesh(X,Y,Z)

-3
3
2
1
0
-1
-2
-3

-3

-2

-1

Importante: X, Y,
Z son matrices
41

Representacin grfica
(surf)
Funcin: surf(X,Y,Z,C)
Dibuja una superficie
coloreada en 3-D
Si surf(X,Y,Z), C = Z y el
color de la supericie es
proporcional a la altura.

3
2
1
0
-1
-2
-3
4

X, Y, Z son matrices!!

2
0
-2

>> x=linspace(-3,3,50);
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.*(X.^2-Y.^2)./
(X.^2+Y.^2);
>> surf(X,Y,Z)

-4

-4

-2

42

43

>> x=linspace(-3,3,50);
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.*(X.^2-Y.^2)./
(X.^2+Y.^2);
>> surf(X,Y,Z)

2
1
0
-1
-2
-3
4
2
0
-2
-4

>> x=linspace(-3,3,50);
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.*(X.^2-Y.^2)./
(X.^2+Y.^2);

>> C=X.^2+Y.^2-Z.^2;
>> surf(X,Y,Z,C)

-4

-2

3
2
1
0
-1
-2
-3
4
2
0
-2

44

Representacin grfica
(surfc)
>> u=-5:.2:5;
puntos de continuacin
>> [X,Y]=meshgrid(u,u);
>> Z=cos(X).*cos(Y).*...
exp(-sqrt(X.^2+Y.^2)/4);
>> surfc(Z)
>> view(-37.5,20)
>> axis('of')

45

46

Representacin grfica
(plot3)

plot3(x, y,z, style-option)

15

>> t=linspace(0,6*pi,100);
>> x=cos(t);
>> y=sin(t);
>> z=t;
>> plot3(x,y,z)

20

10

0
1
1

0.5

sin
(t)

0.5

-0.5

cos(t)

-0.5
-1

-1

1
0.8

view(azimuth, elevation)

0.4

sin(t)

>> view(0,90)

0.6

0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1

-0.8

-0.6

-0.4

-0.2

0.2

cos(t)

0.4

0.6

0.8

47

Funcin: plot3
Ejemplo:
sin(t), cos(t)

35
30

>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> grid on
>> axis square

25
20
15
10
5
0
1
0.5

1
0.5

-0.5

-0.5
-1

-1

48

>> %Muelle
>> x = -500:500;
>> y = sind(x); %seno en grados
>> z = cosd(x);
>> plot3(x,y,z)

49

Representacin grfica
(fill3)
>>
>>
>>
>>
>>
>>

X=[0 0 0 0; 1 1 -1 1; 1 -1 -1 -1];
Y=[0 0 0 0; 4 4 4 4; 4 4 4 4];
Z=[0 0 0 0; 1 1 -1 -1; -1 1 1 -1];
fillcolor=rand(3,4);
fill3(X,Y,Z,fillcolor)
view(120,30)
1

0.5

-0.5
-1
-1
0

-0.5
0.5

0
1.5

2.5

0.5
3.5

50

Representacin grfica
(contour)
Lneas de contorno (Ya visto antes)

>> x = -10:0.5:10; y = -10:0.5:10;


>> [X,Y] = meshgrid (x,y); % crea matrices para hacer la malla
>> Z = sin (sqrt (X .^2 + Y .^2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1);
>> [C,h] = contour (X,Y,Z);
>> clabel (C,h) % incluye los valores de las isolneas

51

Representacin grfica
(pie3)
>> % popdata: Af,As, Eu, Na,SA
>> pop=[807; 3701; 731; 481; 349];
>> continentes={'Africa','Asia',...
'Europe','N.America','S.America'};
>> pie3(pop,continentes)
>> title({'World Population','(2003)'})

52

Representacin grfica
(stem3)
>>
>>
>>
>>

t=linspace(0,6*pi,200);
x=t; y=t.*sin(t);
z=exp(t/10)-1;
stem3(x,y,z,'filled')

53

Interpolacin: griddata
[Xi, Yi, Zi]=griddata(x,y,z,xi,yi,
method)

% Script that gnerates an interpolated surface


% Given vectors x, y, and z, generate data matrix Zi
% from interpolation to fit a surface through the data.
xv=2*rand(1,100)-1;
yv=2*rand(1,100)-1;
zv=3./(1+xv.^2+yv.^2);

2.5

1.5

1
1
1

0.5
0.5

-0.5

scatter3(xv,yv,zv)
xi=linspace(-1,1,30);
yi=xi;

-0.5
-1

-1

[Xi,Yi,Zi]=griddata(xv,yv,zv,xi,yi,v4);
surf(Xi,Yi,Zi)

2.5

1.5

0.5
1
1

0.5
0.5

0
-0.5

54
-1

-0.5
-1

Todas las propiedades de cada


objeto del grfico
(figura, ejes, elemento grfico,...)
estn guardadas en "handles
(Algunos se han visto antes en ejemplos)

gcf :current figure, gca :current axis


get(handle) muestra todos las
propiedades que se pueden cambiar
set(handle,'PropertyName','Value',...)
cambia
propiedades
Ejemplo:
set(gca,'Xtick',[1 2 3 4 5]);

55

Animaciones con
drawnow
%script for animating the circular motion
of a bead.
%As the bead moves, it leaves a trail
behind it.
clf
theta=linspace(0,2*pi,1000);
x=cos(theta); y=sin(theta);
hbead=line(x(1),y(1),'marker','o','marker
size',8,'erase','xor');
htrail=line(x(1),y(1),'marker','.','color','r',
'erase','none');
axis([-1 1 -1 1]);
axis('square')
for k=2:length(theta)
set(hbead,'xdata',x(k),'ydata',y(k));
set(htrail,'xdata',x(k),'ydata',y(k));
drawnow
end

56

Animaciones
Hay dos maneras de crear animaciones:
Ofine: generar una pelcula para verla luego
On-Line: ir repintando la grfica desde Matlab

Las pelculas pueden generarse de dos


maneras:
Guardar "fotogramas" en el disco (normalmente utilizando
1
print) y luego utilizar un programa
externo para crear la
0.8
pelcula
>> for k = 1:16
0.6
getframe,
movie
plot(ft(eye(k+16)))
axis equal
M(k) = getframe;
end
movie(M,1); %play the movie
movie2avi(M,'mi_peli','fps',1);
>>

0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1

-1

-0.5

0.5

57

You might also like