You are on page 1of 51

Grficos en MATLAB

Grficos en MATLAB
MATLAB ofrece numerosas oportunidades para emplear
rutinas grficas en dos y tres dimensiones.
En la ventana grfica hay una paleta de comandos que
permiten:
aadir texto en posiciones deseadas,
aadir flechas o lneas,
seleccionar alguna de las componentes del grfico y
desplazarla en su caso,
rotar el grfico.

Grficos
Las grficas de MATLAB se pueden exportar a multitud de
formatos grficos puntuales y vectoriales (jpg, bmp, tiff,
eps, png). Adems est la posibilidad de guardarlos con
la extensin fig.
En ese caso, cuando se abre la figura se inicia la ejecucin
de MATLAB y se ofrece al usuario la figura tal y como
estaba cuando la guard, incluyendo modificaciones
realizadas directamente sobre la ventana grfica.

Grficos Bidimensionales

Grficos Bidimensionales
La instruccin bsica para dibujo de curvas planas es
plot.
La orden plot dibuja vector contra vector, siempre que
tengan la misma longitud (da igual que uno sea fila y el
otro columna).
Es una instruccin a la que se le pueden aadir al final
nuevos argumentos.
Tambin se puede emplear con un vector contra una
matriz.

Grficos Bidimensionales
Se van dibujando, en distintas grficas (con distintos
colores), los pares que va formando el vector con las filas
o columnas de la matriz.
En caso de duda, MATLAB siempre opta por leer las
matrices por columnas.
Se puede escoger el color para una grfica lineal entre
una lista habitual: b es azul (blue), r es rojo (red), k es
negro (black), g es verde (green), etc.
Se pueden emplear lneas (-), lneas partidas (- -), guiones
y puntos (.-) y otro tipo de marcadores.

Grficos Bidimensionales
Crear el siguiente script
%% Plot basico
x=0:0.1:2*pi;
y=cos(x);
z=sin(2*x);
plot(x,y,'r-',x,z,'b--'); % dos figs
%% Vector y Vector Fila
t = x'; figure
plot(t, y, 'm.-')
%% Vector y Matriz
W = [y; z]; figure
plot(t, W)

Grficos Bidimensionales

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

-0.2

-0.2

-0.4

-0.4

-0.6

-0.6

-0.8

-0.8

-1

6
1

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

-1

Grficos Bidimensionales
Si se quiere seguir dibujando, pero no queremos borrar la
figura anterior, con figure se genera una figura nueva.
El nmero de figura se establece correlativamente por
MATLAB, sin dejar huecos.
Aqu se puede adems observar varias de las opciones de
dibujo y etiquetado de MATLAB.
Las opciones modifican el dibujo pero no suponen que se
dibuja de nuevo.

Grficos Bidimensionales
figure % en una nueva ventana
x=0:0.01:2*pi;
Y=[cos(x);sin(2*x)];
plot(x,Y)
axis([0 2*pi -1.5 1.5]) % ejes
xlabel('ejex')
ylabel('ejey')
title('titulo')
grid on

Grficos Bidimensionales
titulo
1.5

ejey

0.5

-0.5

-1

-1.5

3
ejex

Grficos Bidimensionales
En la siguiente grfica, vemos cmo emplear ylim para
recortar los lmites en el rango de la variable vertical.
Esto es muy til cuando se quieren dibujar grficas de
funciones que tienden a infinito en algn punto, ya que
el escalado lo estropea todo.

Grficos Bidimensionales
close % cierra la ultima figura
figure(4) % abre la Figura 4
x=linspace(0,3,200); % 200 puntos
equiespaciados
plot(x,1./(x-1).^2)
ylim([0 10]), box off % quitamos la caja de
alrededor
close(1) % cerramos la primera figura

Grficos Bidimensionales
10
9
8
7
6
5
4
3
2
1
0

0.5

1.5

2.5

Grficos Bidimensionales
La orden
close
cierra la ltima figura creada, modificada o seleccionada.
Si queremos cerrar un figura concreta se le da como
argumento el nmero de figura (por ejemplo, escribiendo
close(3) se cierra la figura 3).
Todas las figuras se cierran con close all.

Grficos Bidimensionales
Por defecto, si no se escogen los marcadores, todas las
grficas son con lnea continua.
Los colores dentro de una misma grfica plot se van
rotando de una lista que comienza con azul, verde y rojo
(en este orden).
Los macros de escritura (para escribir integrales, letras
griegas, para cambiar tipos de letra) son de TEX.
Se dispone de todas las letras griegas (poniendo su
nombre en ingls), del smbolo para infinito (ver ejemplo)
y de smbolos bsicos como la integral, etc.
Con \it se pasa el tipo a cursiva (italic) y con \bf a
negrita (boldface).

Grficos Bidimensionales
x=linspace(0,pi,200);
y=1-x.^2/2+x.^4/16;
plot(x,cos(x),x,y)
legend('cos','\itTaylor') % \it=cursiva
title('titulo con \alpha, \infty, \int_a^b')
pause
figure(2) % acceso a la segunda grafica
plot(x,cos(x),x,1-x.^2/2+x.^4/16)
legend('\bfcos','\itTaylor',2) % en otra esquina
text(0,0.5,'texto en grafica') % (0,0.5) son las
coordenadas

Grficos Bidimensionales
titulo con , , ba
2.5

2.5
cos
Taylor

1.5

1.5

0.5 texto en grafica

0.5

-0.5

-0.5

-1

cos
Taylor

0.5

1.5

2.5

3.5

-1

0.5

1.5

2.5

3.5

Grficos Bidimensionales
La instruccin gtext sirve para colocar algn tipo de
comentario o texto en una grfica viendo dnde
queremos colocarlo.
No obstante, eso se puede hacer manualmente,
empleando la paleta de comandos de la ventana grfica
de MATLAB.
%% script3.m
x=0:0.1:2*pi;
plot(x, cos(x)), axis equal
gtext('texto para poner')

Grficos Bidimensionales
Cmo hacer una grfica rellena de un color.
La orden fill necesita tres argumentos: lista de
coordenadas horizontales de los puntos, lista de
coordenadas verticales, color de relleno.
Si la lista de puntos no es cerrada (el ltimo
punto coincide con el primero), MATLAB los une
automticamente.
En el siguiente ejemplo, se tiene tres grficas
realizadas con fill.

Grficos Bidimensionales
El argumento que da el color se puede escoger con uno
de los colores bsicos o empleando el estndar RGB con
tres parmetros entre 0 y 1.
Los colores [1 0 0], [0 1 0] y [0 0 1] corresponden
exactamente a los que MATLAB denota como 'r', 'g' y 'b':
son las versiones ms puras del rojo, el verde y el azul.
[aaa] con a [0; 1] es un tono de gris, siendo [0 0 0] el
negro y [1 1 1] el blanco.

Grficos Bidimensionales
t = linspace(0,2*pi,20);
fill(cos(t),sin(t),'r',1+0.5*cos(t),0.5*sin(t),[0 0.5 0]);
hold on
pause
fill(0.3*cos(t),1.5+0.3*sin(t),[0.8 0.8 0.8])
1

0.8
1.5

0.6
0.4

0.2
0

0.5

-0.2
0

-0.4
-0.6

-0.5

-0.8
-1
-1

-0.5

0.5

1.5

-1
-1

-0.5

0.5

1.5

Mlitples grficas - subplot

23

Disposiciones de Mltiples Grficas


La orden subplot, permite colocar varias grficas
dentro de la misma figura.
La orden fplot en su versin ms simple: dando una
cadena de caracteres (que debe estar vectorizada), que
MATLAB convertir en funcin para dibujar.
Si la funcin tiene varias componentes, MATLAB las
dibuja por separado, con distintos colores.

Disposiciones de Mltiples Grficas


%% Multiples graficas
subplot(221)
fplot('cos(x)', [0 4*pi])
subplot(222)
fplot('abs(cos(x))', [0 4*pi]), grid on
subplot(223)
fplot('[sin(x), sin(2*x), sin(3*x)]', [0 2*pi])
subplot(224)
fplot('[sin(x), cos(x)]', [0 2*pi])
legend('sin', 'cos')
pause
subplot(212)
fplot('(2+cos(x))*sin(10*x)', [0 8*pi])

Disposiciones de Mltiples Grficas


1

1
0.8

0.5

0.6
0
0.4
-0.5
-1

0.2
0

10

0.5

0.5

-0.5

-0.5

-1

-1

10

sin
cos

Disposiciones de Mltiples Grficas


1

1
0.8

0.5

0.6
0
0.4
-0.5
-1

0.2
0

10

10

4
2
0
-2
-4

10

15

20

25

Disposiciones de Mltiples Grficas


subplot(324)es una disposicin de 3x2 dibujos. El
siguiente nmero escoge cul de los seis.
El orden es por filas, luego el cuarto est en la segunda
fila, primera columna. Salvo que se d una nueva orden
subplot se seguir dibujando en el escogido
anteriormente.
La ltima parte del script muestra que subplot(212)
es compatible con subplot(22x). Junta las dos
posiciones inferiores en un nico dibujo. Si el dibujo no
se puede hacer uniendo un nmero exacto de posiciones
del subplot precedente, se borra lo que haga falta para
que quepa el nuevo dibujo, pero nada ms.

Representacin de grficos especiales


yr = 2008:2014;
ventas = [8 12 20 22 18 24 27];
bar(yr, ventas, 'g')
xlabel('Anio')
ylabel('Ventas en millones')
30

Grfico de barras verticales

Ventas en millones

25

20

15

10

2008

2009

2010

2011
Anio

2012

2013

2014

Representacin de grficos especiales


yr = 2008:2014;
ventas = [8 12 20 22 18 24 27];
barh(yr, ventas, 'k')
xlabel('Anio')
ylabel('Ventas en millones')
2014

Ventas en millones

Grfico de barras horizontales

2013
2012
2011
2010
2009
2008

10

15
Anio

20

25

30

Representacin de grficos especiales


yr = 2008:2014;
ventas = [8 12 20 22 18 24 27];
stairs(yr, ventas, 'c','Linewidth', 4)
xlabel('Anio')
ylabel('Ventas en millones')
28
26

Grfico de escaleras

24

Ventas en millones

22
20
18
16
14
12
10
8
2008

2009

2010

2011
Anio

2012

2013

2014

Representacin de grficos especiales


yr = 2008:2014;
ventas = [8 12 20 22 18 24 27];
stem(yr, ventas, 'r')
xlabel('Anio')
ylabel('Ventas en millones')
30

Lneas verticales

Ventas en millones

25

20

15

10

0
2008

2009

2010

2011
Anio

2012

2013

2014

Representacin de grficos especiales


grd = [7 8 10 5 9];
pie(grd)
title('Notas de la clase')
Notas de la clase
18%
23%

Grfico circular (pastel)


21%
13%

26%

Superficies

34

Superficies
MATLAB dispone de una gran variedad de formatos para
dibujar grficas de funciones de dos variables y una
componente.
En general se emplean colores para resaltar las alturas,
en una gradacin tpica de clculo cientfico que escala
las alturas del azul al rojo (de menor a mayor).
Cuando se van a emplear funciones de dos variables, se
necesita cruzar una lista de valores
con otra
.

Superficies
Esto lo hace la orden meshgrid
La instruccin
[u v] = meshgrid(x,y)
devuelve dos matrices con m filas y n columnas

Superficies surf
As u(i,j) = xj y v(i,j) = yi: Recorriendo en
paralelo las matrices u y v se obtienen, por tanto, todos los
pares (xi; yj ).
t = linspace(0, 2*pi, 200);
subplot(221)
plot3(sin(t), cos(t), sin(10*t)); % curvas en
espacio
[X, Y] = meshgrid(-1:0.1:1, -1:0.1:1);
subplot(2,2,2), surf(X, Y, X.^2 + Y.^2);
subplot(223), surfc(X, Y, X.^2 + Y.^2);
subplot(224), contour(X, Y, X.^2 - Y.^2);

Superficies surf
1

-1
1

0
1

0
-1 -1

0
-1 -1

1
2

0.5

0
1

-0.5
1

0
-1 -1

-1
-1

-0.5

0.5

Superficies surf
Se puede hacer [X,Y] = meshgrid(lista1) con
resultados evidentes. Tambin existe pcolor para dar una
vista zenital coloreada, equivalente a surf.
El punto de vista de las grficas tridimensionales siempre es
con el observador en una esquina con (x; y) negativos y z
positivo.
El punto de vista se puede rotar directamente sobre la figura
con las utilidades grficas de los mens.
En todas las grficas tridimensionales, por defecto el color es
proporcional a la altura.
La gama de colores es la llamada jet que organiza los colores
del azul al rojo pasando por el verde.
En el fondo es una gama de grises pero coloreada, donde el
color se controla por un nico parmetro.

Superficies surf
En el siguiente script7.m se muestra algunas utilidades ms.
El comando shading permite controlar el tipo de rellenado
en una superficie dibujada con surf.
El rellenado plano (flat) quita las curvas paramtricas, que
pueden llegar a ennegrecer mucho una figura, pero asigna un
color plano a cada recuadro contenido entre las lneas
paramtricas.
El rellenado interpolado (interp), suaviza este resultado.
An as, la calidad visual de la grfica depender del nmero
de puntos escogido para realizar la grfica.

Superficies mesh
Considere la ecuacin sin(r)/r o funcin sinc.

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
% eps previene division por cero
Z = sin(R)./R;
figure
mesh(X,Y,Z)

Enfatizando la forma de la superficie

figure
surf(X,Y,Z,'FaceColor','interp',...
'EdgeColor','none',...
'FaceLighting','phong')
daspect([5 5 1])
axis tight
view(-50,30)
camlight left

colormap

[x,y] = meshgrid(-2:.2:2);
Z = x.*exp(-x.^2-y.^2);
surf(x,y,Z,gradient(Z))
colormap('lines'), pause
colormap('pink'), pause
colormap('copper'), pause
colormap('bone'), pause
colormap('gray'), pause
colormap('winter'), pause
colormap('autumn'), pause
colormap('summer'), pause
colormap('spring'), pause
colormap('cool'), pause
colormap('hot'), pause
colormap('HSV'), pause
colormap('Jet'), pause

quiver
[X, Y] =...
meshgrid(-2:.2:2,...
-1:.2:2);
Z = X.*exp(-X.^2-Y.^2);
[px, py] =...
gradient(Z, .2, .2);
% genera un conjunto de
% vectores en la direccion
% de mayor crecimiento
quiver(X, Y, px, py, 2, 'r')

2.5
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2.5

-2

-1.5

-1

-0.5

0.5

1.5

Resumen de comandos bsicos

45

Tablas de Instrucciones y Opciones


para Grficos
Instrucciones de dibujo bidimensional

Tablas de Instrucciones y Opciones


para Grficos
Colores y marcadores

Opciones para Dibujos


Bidimensionales

Opciones para Dibujos


Bidimensionales

Opciones para Dibujos


Bidimensionales

Grficas Tridimensionales

You might also like