Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Pedro Corcuera
Dpto. Matemtica Aplicada y
Ciencias de la Computacin
Universidad de Cantabria
corcuerp@unican.es
Objetivos
Presentar la implementacin de una amplia
seleccin de capacidades de grficas de dos
dimensiones
Matlab
Indice
Introduccin a la gestin de grficos
Comandos Bsicos 2D Plotting
Notas y mejoras en grficos
Matlab
Introduccin
Matlab proporciona una amplia seleccin de
capacidades muy flexibles y fciles de implementar
de grficos en dos y tres dimensiones
Las funciones grficas se puede agrupar en tres
categoras:
Gestin grfica
Generacin de curvas y superficie
Anotacin y caractersticas del grfico
Annotation and
Characteristics
figure
hold
subplot
zoom
2D and 3D
axis, axis equal,
axis off,
axis image
box
clabel
grid
legend
set
text
title
xlabel
xlim
ylabel
ylim
2D
3D
axes
contour,
bar
contour3,
convhull
contourf
delauney
cylinder
3D
mesh, meshc,
rotate3d fill
image
meshz
view
loglog
pie3
movie
plot3
patch
surf, surfc
pie
waterfall
plot
plotyy
polar
semilogx
semilogy
stairs
stem
voronoi
Matlab
3D
colorbar
colormap
shading
text3
zlabel
5
Generalidades
Un grfico es creado en una ventana de figura, que
es una ventana creada por Matlab en tiempo de
ejecucin, cuando cualquier funcin de gestin,
generacin o anotacin y caractersticas se invoca
Para retener cada nuevo grfico en la ventana de
figura se debe usar
figure(n)
donde n es un entero
Matlab
Generalidades
Se puede colocar varios grficos creados
independientemente en una ventana de figura con
subplot(i, j, k)
donde
i,j dividen la ventana en sectores (filas y columnas)
k indica el sector donde se coloca el grfico
Ejemplos
Script o Funcin
figure(1)
expresiones plotting
Script or Funcin
figure(2)
subplot(1, 2, 1)
expresiones plotting
subplot(1, 2, 2)
expresiones plotting
Matlab
Ejemplos
Script or Funcin
figure(3)
subplot(2, 1, 1)
plotting expressions
subplot(2, 1, 2)
plotting expressions
Script or Funcin
figure(4)
subplot(2, 3, 3)
plotting expressions
subplot(2, 3, 2)
plotting expressions
subplot(2, 3, 1)
plotting expressions
subplot(2, 3, 4)
plotting expressions
subplot(2, 3, 5)
plotting expressions
subplot(2, 3, 6)
plotting expressions
Matlab
Generalidades
Como cada funcin de generacin de grfico crea
una nueva ventana de figura, para dibujar ms de
una curva, superficie o lnea (o combinacin de stos)
en un mismo grfico, se debe usar
hold on
10
Copy Figure
Matlab
11
12
o
plot(u1, v1, c1)
hold on
plot(u2, v2, c2)
donde
c1 y c2 contienen los smbolos para los tipos y colores
Matlab
13
Matlab
Point type
Symbol Description
+
Plus sign
o
Circle
*
Asterisk
.
Point
x
Cross
s
Square
d
Diamond
^
Upward-pointing triangle
v
Downward-pointing
>
triangle
<
Right-pointing triangle
p
Left-pointing triangle
h
Pentagram
Hexagram
14
15
16
Matlab
17
Ejemplos de grficos
Puntos
plot(2, 4, 'r*')
Lneas
plot([0, 1], [0, 2])
x = 2:2:8;
y = [zeros(1, length(x)); cos(pi*x/20)];
plot([x; x],y, 'k') | plot([x; x], y, 'k', x, cos(pi*x/20), 'rs')
axis([1, 9, 0, 1])
Matlab
18
Ejemplos de grficos
Lneas y puntos
x = 2:2:8;
y = [zeros(1, length(x)); cos(pi*x/20)];
plot([x; x], y, 'k')
hold on
plot(x, cos(pi*x/20), 's', 'MarkerEdgeColor', 'b',
'MarkerFaceColor', 'r', 'MarkerSize', 14)
axis([1, 9, 0, 1])
Matlab
19
Ejemplos de grficos
Crculos
Para dibujar un crculo de radio r con centro en (a, b) se usa
x = a + rcos( )
y = b + rsin( )
donde 0 1 2
Script para dibujar crculo 1 = 2, a = 1, b = 2, and r = 0.5
theta = linspace(0, 2*pi);
plot(1+0.5*cos(theta), 2+0.5*sin(theta))
axis equal
Matlab
20
Ejemplos de grficos
Crculos
Para dibujar una familia de seis crculos concntricos con
radio inicial 0.5 e incremento de 0.25 y centros indicados
por un signo +
Script:
theta = linspace(0, 2*pi, 50);
rad = 0.5:0.25:1.75;
x = 1+cos(theta)'*rad;
y = 2+sin(theta)'*rad;
plot(x, y, 'k', 1, 2, 'k+')
axis equal
Matlab
% (150)
% (16)
% (506)
% (506)
21
Ejemplos de grficos
Familia de Curvas
Matlab permite representar el eje x por un vector y el eje y
por una matriz. Dibujar las curvas segn el vector y las
columnas o filas de la matriz, dependiendo de cual
coincide con la longitud del vector
2
2
y
=
a
x
Script: Dibujo de familia de parbolas
donde 5 x 5 e incrementos 0.2 y a = 1, 2, , 5
x = 5:0.2:5;
% (151)
a = 1:5;
% (15)
[xx, aa] = meshgrid(x.^2, a.^2); % (551)
plot(x, aaxx, 'k')
Matlab
22
Ejemplos de grficos
Familia de Curvas
Script: Visualizacin de la convergencia de series
N
1
SN =
2
(a
+
j)
j =1
para N = 1, 2, , 10 y a = 1, 2, y 3
aa = 1:3;
N = 1:10;
[a, k] = meshgrid(aa, N);
S = cumsum(1./(a+k).^2);
plot(N, S, 'ks-')
Matlab
% (13)
% (110)
% (103)
% (103)
23
donde 0 x , y , z 3.5
Se puede graficar las tres funciones en una figura de
tres maneras:
Modo 1:
x = linspace(0, 3.5);
plot(x, [0.1*x.^2; cos(x).^2; exp(-0.3*x)], 'k')
Matlab
24
Modo 3:
x = linspace(0, 3.5);
plot(x, 0.1*x.^2, 'k')
hold on
plot(x, cos(x).^2, 'k')
plot(x, exp(-0.3*x), 'k')
1.4
1.2
0.8
0.6
0.4
0.2
Matlab
0.5
1.5
2.5
3.5
25
Matlab
26
0.5
1.5
2.5
Matlab
3.5
4.5
27
Matlab
28
29
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-1
Matlab
-0.8
-0.6
-0.4
-0.2
0.2
0.4
0.6
0.8
30
Matlab
31
H () =
(1 - ) + ( 2 )
2 2
2
() = tan
1 - 2
-1
Se crea la funcin
function [H, T] = FOm(Om, z)
T = atan2(2*z*Om, 1-Om.^2)*180/pi;
H = 1./sqrt((1-Om.^2).^2+(2*z*Om).^2);
32
Matlab
33
Om = linspace(0.01, 2, 50);
[H, T] = FOm(Om, 0.05);
stairs(Om, H)
Matlab
34
Om = linspace(0.01, 2, 30);
[H, T] = FOm(Om, 0.05);
bar(Om, H, 0.6)
ancho de bar defecto = 0.8
(20% de ancho de bar es espacio blanco)
Matlab
35
plotyy
Crea un grfico que consiste de dos funciones
diferentes cada uno con dos rangos diferentes de
valores de x e y. La funcin es
plotyy(x1, y1, x2, y2, 'function_1', 'function_2')
Es equivalente a
function_1(x1, y1)
hold on
function_2(x2, y2)
Matlab
36
Ejemplos plotyy
Si se quiere obtener H() y () en la misma grafica
Om = logspace(-1, 1, 200);
[H, T] = FOm(Om, 0.05);
plotyy(Om, H, Om, T, 'loglog', 'semilogx')
Matlab
37
38
[x, y] = PointSet;
n = convhull(x, y);
plot(x(n),y(n), 'k-', x, y, 'ok')
axis equal
8
7
6
5
4
3
2
1
Matlab
10
12
39
[x, y] = PointSet;
voronoi(x, y, 'ko')
axis equal
Matlab
40
41
pie
pie3
20%
20%
2%
78%
78%
Matlab
42
pie3
2%
20%
20%
2%
78%
78%
Matlab
43
pie3
R&D 2 %
Initial 20 %
Initial 20 %
R&D 2 %
Operational 78 %
Operational 78 %
Matlab
44
45
46
BLUE
M rows
RED
GREEN
Imagen truecolor
Imagen bitmap
Matlab
47
A = imread('WindTunnel.jpg', 'jpeg');
A(250:330, 100:180, 1) = 255;
A(250:330, 100:180, 2) = 255;
A(250:330, 100:180, 3) = 0;
image(A)
axis image off
Matlab
48
qu fila? 200
250
200
150
100
50
100
50
150
200
250
50
100
150
200
250
300
300
350
400
50
100
150
200
250
Matlab
49
50
Matlab
51
52
ylabel('Valor de funciones')
0.6
0.4
1/cosh(x)
0.2
0
x = 4.73
-0.2
cos(x)
-0.4
-0.6
3
x
xlabel('x')
plot(x, cos(x), 'k', x, 1./cosh(x), 'k', [4.73 4.73], [-1 1], 'k')
Matlab
53
Leyendas
Para identificar las curvas se puede usar
legend(s1, s2, , sn, 'Location', 'Keyword')
donde
s1,etc, son strings que contiene el identificador para cada
lnea en el recuadro de leyenda en orden de aparicin
Keyword es un string opcional que coloca la leyenda en uno
de 8 lugares predeterminados en el grfico
El nmero de argumentos de leyenda es menor o igual al
nmero de curvas correspondientes a las funciones
La leyenda se coloca despus de todas las funciones a
graficar
Matlab
54
'North'
'East'
'West'
'SouthWest'
'NorthEast'
Posicin
por
defecto
'South'
'SouthEast'
55
Ejemplo: leyendas
legend difiere de text en que text se puede
usar muchas veces mientras que legend slo se
puede usar una vez
x = linspace(0, 6, 100);
plot(x, cos(x), 'k', x, 1./cosh(x), 'k', [4.73, 4.73], [-1, 1], 'k')
xlabel('x')
ylabel('Valor de las funciones')
title('Visualizacion de interseccion de dos curvas')
text(4.8, -0.1, 'x = 4.73')
legend('cos(x) ', '1/cosh(x) ', 'Location', 'Southwest')
Matlab
56
Ejemplo: Leyendas
Visualizacion de interseccion de dos curvas
1
0.8
0.6
0.4
0.2
0
x = 4.73
-0.2
-0.4
-0.6
cos(x)
1/cosh(x)
-0.8
-1
3
x
Matlab
57
Relleno de regiones
Una regin de un grfico se puede resaltar mediante
su coloreado o mediante el uso de algn elemento
geomtrico para identificarlo
Para rellenar un rea contenida dentro de una region
poligonal se usa:
fill(x, y, c)
donde:
x e y son arrays de la misma longitud que representan los
vrtices de las aristas del polgono cerrado
c es un string que indica el color de relleno
Matlab
58
59
Valor de funciones
0.4
0.2
0
x = 4.73
-0.2
-0.4
-0.6
cos(x)
1/cosh(x)
-0.8
-1
3
x
Matlab
60
61
t = linspace(0, 2*pi);
fill(t, sin(t), 'm')
hold on
fill(t, 0.5*sin(2*t), 'y')
axis off
Matlab
62
Ejemplo: transparencia
t = linspace(0, 2*pi);
fill(t, 0.5*sin(2*t), 'y')
hold on
fill(t, sin(t),
'm', 'FaceVertexAlphaData', 0.6,
'FaceAlpha', 'Flat')
axis off
t = linspace(0, 2*pi);
fill(t, 0.5*sin(2*t), 'y')
hold on
fill(t, sin(t),
'm', 'FaceVertexAlphaData', 1,
'FaceAlpha', 'Flat')
axis off
Opaco
Matlab
63
Ejemplo: transparencia
t = linspace(0, 2*pi);
fill(t, 0.5*sin(2*t), 'y')
hold on
fill(t, sin(t),
'm', 'FaceVertexAlphaData', 0.0,
'FaceAlpha', 'Flat')
axis off
Invisible
Matlab
64
Matlab
65
66
Sin transparencia
Transparencia y atributos
de arista alterados
67
68
Lower case
Symbol Syntax
\alpha
\beta
\gamma
\delta
\epsilon
\zeta
\eta
\theta
\iota
\kappa
\lambda
\mu
Upper case
Symbol Syntax Symbol Syntax
\Gamma
\nu
\Delta
\xi
o
\Theta
\pi
\Lambda
\rho
\Xi
\sigma
\Pi
\tau
\Sigma
\upsilon
\Upsilon
\phi
\Phi
\chi
\Psi
\psi
\Omega
\omega
Matlab
Mathematical
Symbol Syntax
\leq
\geq
\neq
\pm
\times
\infty
\sum
\int
\div
\sim
\leftarrow
\uparrow
Symbol Syntax
\circ
\ll
<<
\gg
>>
\prime
'
\Leftarrow
\angle
\surd
\#
#
\$
$
\%
%
\&
&
\{
{
69
70
(1+1 )
71
g2=cos( 1)e-(1+ 1 )
0.08
g2
0.06
0.04
0.02
ylabel('\itg_{\rm2}')
0
-0.02
-0.04
-0.06
1.1
1.2
1.3
1.4
1.5
Matlab
1.6
1.7
1.8
1.9
xlabel('\Omega_1')
72
73
Matlab
Bottom
0 or 360
-90 or 270
0 to 360 or
180 to +180
Top
Middle
90
'Rotation'
'Top'
'Middle'
'Bottom'
180 or -180
'VerticalAlignment'
74
'Linewidth'
'FontSize'
'FontName'
'Courier'
'Helvetica' (default)
'Times' (Times roman)
'Color'
'FontWeight'
'Normal' (default)
'Bold'
Matlab
75
Handle name
Keyword
Keyword value
Attribute affected
a(1)
a(1)
'Color'
b(1), b(2)
'FontSize'
b(1), b(2)
'FontName' 'Courier'
'Helvetica' (default)
'Times' (Times roman)
b(1), b(2)
'Color'
Matlab
76
Key word
'Linewidth'
'Color'
Keyword value
Number > 0 (default: 0.5)
'Letter from 2nd column of
Table 6.2'
Matlab
77
78
Matlab
79
Matlab
80
Matlab
81
Amplitud
0.2
0
x = 4.73
-0.2
-0.4
-0.6
cos(x)
1/cosh(x)
-0.8
-1
3
x
Matlab
82
83
84
Valor de funciones
0.5
0
x = 4.73
-0.5
cos(x)
1/cosh(x)
-1
0
x
Matlab
85
Matlab
86
height
bottom
width
0
0
left
87
sin(k )
x( ) = 1 + 2 H ( k )
sin ( k ( k ) + k )
k
k =1
88
(1 ) + ( 2 )
2 2
k
2 k
( k ) = tan
1 2k
1
k = tan 1
sin(k ) k
0
89
90
10
H( )
1.5
10
-2
x()
10
10
0.5
-0.5
-1
-40
-20
20
40
60
80
100
120
91
92
Matlab
93
Matlab
94
Matlab
Colocando el puntero
sobre la curva se obtiene
los valores mostrados
95
Pulsando en el botn
derecho sobre los
valores de datos se
obtiene el men
Matlab
96
Animacin
Las funciones que se usan para crear una pelcula
son
A(k) = getframe
que captura el k-simo frame de un total de N frames
movie(A, nF, pbs)
que se usa para reproducir nF veces los N frames
capturados en la matriz A por getframe. Esta funcin
reproduce la secuencia a una velocidad pbs, que si se
omite se usa el valor por defecto 12 frames por segundo
Matlab
97
Animacin
Para crear una pelcula en el formato avi (audio/video
interleaved) a partir de la pelcula creada con
movie, se usa
movie2avi(A, 'FileName.avi', 'KeyWord', 'KeyWordValue');
La variable A es la variable usada en movie
98
Ejemplo de Animacin
Se requiere crear una animacin de un mecanismo de
de manivela. La distancia horizontal del movimiento
del deslizador como funcin del ngulo de rotacin
de la manivela es
s = a cos + b ( a sin e )
2
0 2 en posiciones
igualmente espaciadas n = 40
a = 1 b = 2.5 e = 0.25
e
c = 0.5 d = 1
f = 0.06
El nmero de repeticin es 5 (= nF)
Matlab
d
c
99
Ejemplo de Animacin
n = 40; phi = linspace(0, 2*pi, n);
a = 1; b = 2.5; e = 0.25; nF = 5;
c = 0.5; d = 1; f = 0.06;
ax = a*cos(phi); ay = a*sin(phi);
s = real(ax+sqrt(b^2-(ay-e).^2));
v = [1.1*min(ax), 1.1*(max(s)+d/2) 1.1*min(ay), 1.1*max(ay)];
xgnd = [min(ax), max(s)+d/2, max(s)+d/2, min(ax), min(ax)];
ygnd = [e, e, e-f, e-f, e];
slidery = [e, e+c, e+c, e, e]; % Componente vertical del deslizador
d
es constante
c
e
a
s = a cos + b2 ( a sin e )
Matlab
100
Ejemplo de Animacin
for k=1:n
fill(xgnd, ygnd, 'r') % Barra horizontal
hold on
plot(ax, ay, 'b--', 0, 0, 'ko'); % circulo punteado y centro de circulo
sliderx = [s(k)-d/2, s(k)-d/2, s(k)+d/2, s(k)+d/2, s(k)-d/2];
fill(sliderx, slidery, 'm'); % posicion slider
plot([0 ax(k)], [0;ay(k)], 'ko-', 'LineWidth', 2);
plot([ax(k), s(k)], [ay(k), e+c/2], 'ko-', 'LineWidth', 2);
axis(v)
axis off equal
ManivelaFrame(k) = getframe;
hold off
end
movie(ManivelaFrame, nF, 30)
movie2avi(ManivelaFrame, Manivela.avi', 'compression', 'none')
Matlab
101
Ejemplo de Animacin
Matlab
102
donde
r es la distancia radial desde el centro del pistn
es el ngulo de r con respecto al plano de la pantalla
k es el nmero de onda
a es el radio del pistn
J1(x) es la funcin Bessel del primer tipo de orden 1
Matlab
103
104
1
60
120
0.8
0.6
150
30
0.4
0.2
180
210
330
240
300
270
Matlab
105
Zoom out
Zoom in
Crea lnea
Crea flecha
Seleccin objeto
Aadir texto
Matlab
106
Aadir ttulos
Aadir etiquetas en ejes
Cambiar las marcas
Aadir grids a los ejes
Cambiar color de lneas
Cambiar espesor/estilo de
lneas
etc
Matlab
107
A
Right click
Matlab
108
0
3
10
20
30
40
50
60
70
80
90
100
10
20
30
40
50
60
70
80
90
100
2
1
0
-1
-2
-3
Matlab
109
Guardando figuras
Matlab permite guardar las figuras (.fig) para
procesado posteriores
.fig se puede
abrir despus
con Matlab
Matlab
110