Graficas
Graficas en dos dimensiones
La instrucción básica para graficar es plot(X,Y) donde X es un vector de puntos
y Y es un vector de datos y es de la misma dimensión del vector X. Con el uso
de Plot se abre una nueva ventana con la grafica. El vector de puntos X se
puede generar con la instrucción.
x=linspace(x1,x2,n)
que indica que se genera un vector de n puntos igualmente espaciados. El valor
del primer punto es x1 y el valor del último punto es x2. El incremento en cada
punto es (x2-x1)/(n-1). Por ejemplo,
>>x=linspace(0,5,6)
x=
0 1 2 3 4 5
Computación II Luis Humberto Ortiz Romero 1
Grafica puntos en 2D (plot)
Del resultado que MATLAB entrega vemos que el primer punto es 0, el último
punto es 5 y existe un total de seis puntos. Estos valores de x están
almacenados en un vector renglón de 6 dimensiones. Como otro ejemplo,
>> x=linspace(10,15,11)
Ahora obtenemos un vector renglón de dimensión 11 cuyo valor inicial es 10 y
con valor final de 15. El incremento es (15-10)/(11-1)´=0.5. Si deseamos
graficar sen(x) de 0 a 2pi con una partición de 200 puntos, usamos entonces
>>x=linspace(0, 2*pi, 200);
>>y=sin(x);
>> plot(x,y)
Se obtiene la gráfica del seno en ese intervalo
Computación II Luis Humberto Ortiz Romero 2
>> x=[1 3 2 4 5 3] [Enter]
x=
132453
>> plot(x) [Enter]
Se mostrará esta gráfica
Computación II Luis Humberto Ortiz Romero 3
Otro ejemplo de gráfica (grafica de dos vectores como argumentos):
>> x=[1 6 5 2 1]; y=[1 0 4 3 1]; [Enter]
>> plot(x,y) [Enter]
Otro ejemplo de gráfica (La función plot() permite también dibujar múltiples
curvas introduciendo varias parejas de vectores como argumentos):
>> x=0:pi/25:6*pi; [Enter]
>> y=sin(x); z=cos(x); [Enter]
>> plot(x,y,x,z) [Enter]
Computación II Luis Humberto Ortiz Romero 4
Ahora se va a ver lo que pasa con los vectores complejos. Si se pasan a plot()
varios vectores complejos como argumentos, MATLAB simplemente representa
las partes reales y desprecia las partes imaginarias.
>> plot(eig(rand(20,20)),'+') [Enter]
Se mostrará esta gráfica
El comando anterior es equivalente a:
>> z=eig(rand(20,20)); [Enter]
>> plot(real(z),imag(z),'+') [Enter]
Se mostrará esta gráfica
Computación II Luis Humberto Ortiz Romero 5
Ahora consideremos la grafica de
y=|x| sen(x)
Si definimos y como y=abs(x)*sin(x), ya que estamos tratando con vectores,
usamos
Y=abs(x).*sin(x)
Donde .* indica multiplicación de vectores termino a termino. Entonces
>> x=linspace(-50,50,400) [Enter]
>> y=abs(x).*sin(x); [Enter]
>> plot(x,y) [Enter]
Nos da una gráfica
Computación II Luis Humberto Ortiz Romero 6
Grafiquemos ahora la función sen x de 0 a 2pi. Si graficamos luego y=cos x, obtenemos
una nueva figura con la función cos x. Si deseamos obtener las dos curvas en la misma
figura usamos el comando hold on, como se muestra a continuación:
>> x=linspace(0, 2*pi,100); [Enter]
>>y=sin(x); [Enter]
>>plot(x,y); [Enter]
>> hold on [Enter]
>>plot(x,cos(x)) [Enter]
Con lo que se obtienen las dos funciones en la misma figura. Para cancelar
el comando hold on se usa hold off (cualquier otra curva que grafiquemos se
añadirá sobre la misma figura hasta cancelar hold on).
Computación II Luis Humberto Ortiz Romero 7
Podemos también graficar dos funciones en la misma figura definiendo pares
x,y. Por ejemplo para obtener sen 2x y cos 3x en la misma gráfica:
>>x=linspace(0, 2*pi, 100); [Enter]
>>y1=sin(2*x); [Enter]
>>y2=cos(3*x); [Enter]
>>plot(x,y1,x,y2) [Enter]
Nos da la gráfica. Nótese que cada función se grafica con distinto color.
Para darle información a la gráfica usamos las instrucciones xlabel, ylabel,
title y legend. Así, para nuestra última grafica añadimos
>>xlabel(‘x’); [Enter]
>>ylabel(‘y’); [Enter]
>>title(‘Funciones seno y coseno’); [Enter]
>>legend(‘sen(x)’,’cos(x)’) [Enter]
Con lo que se obtiene la grafica que se muestra a continuación.
Computación II Luis Humberto Ortiz Romero 8
Para realizar una gráfica semilogaritmica usamos primero una partición
semilogaritmica con
x=logspace(x1,x2,n)
lo que hace que se divida el intervalo de forma logarítmica. Los puntos de la
partición se generan de acuerdo a la regla siguiente. El primer punto es 10^x1, el
ultimo punto es 10^x2, y el total de puntos es n. El equivalente de plot es
semilogx(x,y)
De esta manera, con las instrucciones
>>x=logspace(-2,0.8,100); [Enter]
>>y=sin(x); [Enter]
>>semilogx(x,y) [Enter]
Se genera la gráfica siguiente. Nótese que el eje horizontal es logarítmico
mientras que el eje vertical se mantiene lineal.
Computación II Luis Humberto Ortiz Romero 9
Comandos para
manipulación de gráficos
Otra manera de graficar varias funciones en la misma grafica, se logra
definiendo las funciones en un vector de funciones. Para graficar senx, cosx,
senx cosx, | x | sen(x), procedemos de la siguiente manera.
>>x=linspace(0,2*pi,100)’; % se toma la transpuesta para que sea vector columna [Enter]
>> y=[sin(x),cos(x),sin(x).*cos(x),abs(x).*sin(x)]; [Enter]
>>plot(x,y) [Enter]
>>xlabel(‘x-radianes’) [Enter]
>>ylabel(‘Cuatro funciones’) [Enter]
>>title(‘Gráfica multiple’) [Enter]
>>legend(‘sen x’,’cos x’,’sen x * cos x’, ‘|x| sen x’) [Enter]
>>grid on [Enter]
Se obtiene la gráfica
Nótese que hemos incluido la instrucción grid on que le añadió una rejilla a la gráfica.
Computación II Luis Humberto Ortiz Romero 10
El numero de puntos al generar el vector x nos define que tan suave es la
gráfica, por ejemplo si en las graficas anteriores cambiamos x a
>> x=linspace(0,2*pi,10)’; [Enter]
Ahora el vector x solo tiene 10 puntos y entonces obtenemos las graficas de la
siguiente figura, que se observan no tan suaves como las de la gráfica anterior.
Computación II Luis Humberto Ortiz Romero 11
Opciones de Graficas
Existen varias opciones para dar más información en una grafica. La forma general de la
instrucción plot es:
Plot(X1,Y1,S1,X2,Y2,S2,….)
Donde Xi,Yi contiene la información de las curvas a graficar y Si son cadenas de texto que
especifican color, marcadores, tamaño de marcadores, ancho del trazo y estilos del trazo.
Cada cadena puede tener de uno a cuatro caracteres. La tabla 1 siguiente muestra las
distintas opciones para el color de las curvas, el estilo y los marcadores.
Computación II Luis Humberto Ortiz Romero 12
Las opciones se pueden cambiar con el editor de propiedades. Para usar este
editor simplemente seleccionamos el botón para editar la gráfica (Edit Plot)
en la barra de herramientas y luego colocamos el cursor sobre la curva,
presionamos con el botón derecho del Mouse y seleccionamos el parámetro a
cambiar, como se muestra en la grafica siguiente. En este menú podemos
cambiar el ancho de la línea (line width), el marcador (marker), el color, el
tamaño del marcador y el estilo de línea (line style).
Computación II Luis Humberto Ortiz Romero 13
Tabla 1. Códigos de color, estilo de línea y marcador
letra color marcador marker
y amarillo . punto
m magenta o circulo
c azul obscuro x X
r rojo + Mas
g verde * Asterisco
b azul claro s Cuadro
w blanco d Diamante
k negro v Triangulo(hacia abajo)
Estilo de línea Lines style ^ Triangulo (hacia arriba)
- línea sólida < Triangulo (izquierdo)
: puntos > Triangulo (derecho)
-. línea y punto P Pentagrama
-- línea discontinua H hexagrama
Computación II Luis Humberto Ortiz Romero 14
Cuando hay que dibujar varias líneas, por predeterminación se van escogiendo
sucesivamente los colores de la tabla comenzando por el azul, hacia arriba, y
cuando se terminan se vuelve a empezar otra vez por el azul. Si el fondo es
blanco, este color no se utiliza para las líneas. El color del fondo de una grafica
puede cambiarse con el comando
whitebg
Y se regresa al color anterior repitiendo el mismo comando.
Para colocar texto sobre una grafica usamos el comando text con el siguiente
formato
text(x, y, ‘cadena’)
donde x, y son las coordenadas donde empezara a escribirse el texto. Por
ejemplo
Computación II Luis Humberto Ortiz Romero 15
>>x=linspace(0,10,100); [Enter]
>>y=sin(x); [Enter]
>>y2=cos(x); [Enter]
>>plot(x,y,x,y2) [Enter]
>>text(2,0.5, ‘texto de prueba’) [Enter]
Nos muestra la gráfica con el texto.
Computación II Luis Humberto Ortiz Romero 16
Por lo general matlab asigna valores mínimos y máximos de las coordenadas x,y
de la grafica. Sin embargo, el usuario también los puede definir con el comando
axis que tiene la sintaxis
axis([x_inicial x_final y_inicial y_final])
Por ejemplo
>>axis([0 10 -2 2]) [Enter]
especifica que la variable x solo se gráfica de 0 a 10 mientras que la variable y
solo se grafica de -2 a 2. Alternativamente podemos usar el menú de EditAxes
Properties… con lo que se abre debajo de la figura una ventana donde podemos
especificar los limites deseados para los ejes, además podemos dar la opción de
etiquetar los ejes (y label y x label). Usando este ultimo menú o indicándolo
como el comando axis (vea la grafica).
Computación II Luis Humberto Ortiz Romero 17
Graficas polares
Se puede graficar una función expresada en coordenadas polares por medio del
comando polar que tiene la sintaxis
Polar( ,r, s)
Donde
y r son las coordenadas polares y s es una cadena que especifica las mismas opciones del
comando plot y es opcional. Por ejemplo, si deseamos graficar la función de la espiral
Usamos R=2
>>teta=linspace(0,8*pi,200); [Enter]
>>r=2*teta; [Enter]
>>polar(teta,r) [Enter]
Se obtiene la grafica de la espiral
Computación II Luis Humberto Ortiz Romero 18
La función
r=sen 2 cos 2
se puede graficar con
>>teta=linspace(0,2*pi); [Enter]
>>ro=sin(2*teta).*cos(2*teta); [Enter]
>>polar(teta,ro,’g’) [Enter]
>>title(‘Grafica polar de sin(2 teta) cos(2 teta)’) [Enter]
Y se grafica
Computación II Luis Humberto Ortiz Romero 19
Otros tipos de graficas.
Grafica de barras
Este tipo de graficas se obtiene con el comando
bar(x,y,s)
donde y es un vector de valores en las coordenadas x y s son las opciones de la
grafica. Por ejemplo, para graficar 21 puntos de -10 a 10, usamos
>>x=linspace(-10,10,21); [Enter]
>>y=exp(-x.*x); [Enter]
>>bar(x,y); [Enter]
>>title(‘Grafica de barras de una curva de campana’) [Enter]
Se muestra la gráfica
Computación II Luis Humberto Ortiz Romero 20
Grafica de escalera
La misma función se puede graficar en forma de escalera con
stairs(x,y,’s’)
Si en la gráfica anterior cambiamos bar por stairs y en title
cambiamos barras por escalera, se obtiene la gráfica.
>>x=linspace(-10,10,21); [Enter]
>>y=exp(-x.*x); [Enter]
>>stairs(x,y); [Enter]
>>title(‘Grafica de escalera de una curva de campana’) [Enter]
Se muestra la grafica
Computación II Luis Humberto Ortiz Romero 21
Grafica de histograma
La grafica del histograma es similar a la gráfica de barras, pero solo proporciona 10
barras entre el máximo y un mínimo del vector y. El comando es
Hist(y,n)
Donde y es la variable que deseamos graficar y n es el numero de barras de la gráfica.
Para volver un histograma la grafica de barras cambiamos hist por bar y en title
cambiamos histograma por barras y se obtiene la gráfica.
>>x=linspace(-5,5,50); [Enter]
>>y=randn(5000,1); [Enter]
>>hist(y,x); [Enter]
>>title(‘Grafica de histograma de una curva de campana’) [Enter]
Se muestra el histograma.
Computación II Luis Humberto Ortiz Romero 22
Grafica de puntos (stem)
Esta es una grafica de puntos. El comando es
stem(x,y, ‘s’)
Por ejemplo para una secuencia aleatoria de puntos
>>y=randn(50,1); [Enter]
>>stem(y,’:’); [Enter]
>>title(‘Grafica de puntos’) [Enter]
Se genera la gráfica
Computación II Luis Humberto Ortiz Romero 23
Grafica de brújula (Compass)
Esta gráfica muestra la magnitud y ángulo de números complejos.
El comando es
compass(z)=compass(x+yj)=compass(x,y)
donde z=x+yj
Por ejemplo, para el vector z dado por
>>Z=[3+2j, -4+7j, -4-5j]
Se obtiene la gráfica con
>> compass(z) [Enter]
Computación II Luis Humberto Ortiz Romero 24
Grafica de Pie (Pastel)
La gráfica de pie es una gráfica para desplegar el porcentaje que cada elemento en
un vector o matriz contribuye a la suma de todos los elementos. Pie y pie3 crean
graficas de 2 y 3 dimensiones, respectivamente. Para el vector A dado por
>>A=[3 4 5 9 3]
La gráfica de pie se obtiene con
>> pie(A) [Enter]
Y el resultado es una gráfica de pastel.
Computación II Luis Humberto Ortiz Romero 25
Subgraficas (SUBPLOTS)
Es posible dividir una gráfica en varias graficas más pequeñas llamadas
subgraficas. Cada subgrafica se genera independientemente de las demás. La
instrucción es subplot y su sintaxis es
subplot(m, n, p)
Este comando divide la figura en mxn subgraficas arregladas en forma de
matriz de m renglones y n columnas. La variable p hace que se active cada
subgrafica.
Para 4 subgraficas en arreglo 2 x 2 usamos subplot (2,2,p) donde p indica que
posición en el arreglo ocupa esta subgrafica. En este caso p puede tomar uno
de los valores 1, 2,3 o 4. La posición en el arreglo es
1 2
3 4
Computación II Luis Humberto Ortiz Romero 26
Por ejemplo,
>>subplot(2,2,1) [Enter]
>>x=linspace(0,2*pi,100); [Enter]
>>plot(x,y); [Enter]
>>title(‘Función seno’) [Enter]
>>subplot(2,2,2) [Enter]
>>r=5*log10(x); [Enter]
>>polar(x,r); [Enter]
>>title(‘Espiral’) [Enter]
Activa las subgraficas en el primer renglón en las dos columnas, como
se aprecia en la figura.
Computación II Luis Humberto Ortiz Romero 27
Por ejemplo
>>subplot(2,2,3) [Enter]
>>plot(x,tan(x)) [Enter]
Produce la primera gráfica del segundo renglón (la posición 3) en la figura.
Nótese que no hay subgrafica (2,2,4).
Computación II Luis Humberto Ortiz Romero 28
Graficas en 3 dimensiones
Las graficas de 3 dimensiones en ocasiones aparte de ser más vistosas, aportan más
información al usuario. Existen varios tipos de graficas de 3 dimensiones, algunas de las
cuales se mencionan. Las dimensiones se definen como x, y, z. El comando para graficar
una función z=f(x,y) en tres dimensiones depende del tipo de grafica que se desea
obtener.
El comando plot3
plot3(x,y,z,s)
donde x,y,z, son las coordenadas de la función y s son las opciones para la
gráfica.
Por ejemplo, la gráfica de la espiral dada por
>> x=sen t [Enter]
>> y=sen t [Enter]
>> z=t [Enter]
Computación II Luis Humberto Ortiz Romero 29
se puede obtener con
>>t=linspace(0,10*pi,500); [Enter]
>>plot3(sin(t),cos(t),t); [Enter]
>>title(‘Espiral tridimensional’) [Enter]
>>text(0,0,0, ‘origen’) [Enter]
>> grid [Enter]
Y nos da la gráfica.
Computación II Luis Humberto Ortiz Romero 30
Supongamos ahora que deseamos graficar tres funciones distintas: sin c, cos x y
sen 2x, en tres planos diferentes. Esto se puede hacer si cada una de ellas es una
variable distinta que empieza en un valor distinto de la variable y, es decir, en un
plano distinto. El código para hacer esto es:
>>x=linspace(0,3*pi,100); [Enter]
>>Z1=sin(x); [Enter]
>>Z2=cos(x); [Enter]
>>Z3=sin(2*x); [Enter]
>>Y1=zeros(size(x)); [Enter]
>>Y2=ones(size(x)); [Enter]
>>Y3=Y2/2; [Enter]
>>plot3(x,Y1,Z1,x,Y2,Z2,x,Y3,Z3); [Enter]
>>grid [Enter]
>>title(‘sen x, cos x, sen 2x’) [Enter]
Se muestra la Gráfica.
Computación II Luis Humberto Ortiz Romero 31
Gráfica de malla (mesh)
Las funciones que se pueden graficar son de la forma
Z=f(x,y)
Y el comando es
mesh(x,y,z)
donde se debe primero haber definido una rejilla (meshgrid) que genera las matrices x,y.
Esto se logra con
[x,y]=meshgrid(xi, yi: inc:xf, yf)
Donde (xi,yi) y (xf,yf) son los valores iniciales y finales de x,y y la variable inc es el
incremento de x,y. Por ejemplo,
>>[X,Y]=meshgrid(-10:0.5:10); [Enter]
>>R=sqrt(X.^2+Y.^2)+eps; [Enter]
>>Z=sin(R)./R; [Enter]
>>mesh(X,Y,Z) [Enter]
Nos da la gráfica y como se observa en la pantalla del monitor es en color.
Computación II Luis Humberto Ortiz Romero 32
Esta gráfica se puede hacer transparente añadiendo: hidden off, como se
muestra en la figura.
Mesh(x,y,z) también acepta opciones para la gráfica. Por ejemplo, para obtener
una figura en color negro podemos cambiar mesh(X,Y,Z) por
mesh(X,Y,Z, ‘Edgecolor’,’black’)
Dos formas similares a mesh son meshc y meshz. Meshc añade un mapa de
contorno y meshz añade un plano cero. Si cambiamos mesh por meshc y luego
por meshz obtenemos las graficas.
Computación II Luis Humberto Ortiz Romero 33
Grafica de superficie (surf)
La gráfica de superficie surf es similar a la de malla, excepto que los rectángulos de la
superficie están coloreados. Los colores de los rectángulos están determinados por los
valores de Z y por el mapa de colores. Por ejemplo la figura sphere esta definida en
valores de Z y por el mapa de colores. Por ejemplo la figura sphere esta definida en
matlab. Si deseamos obtener una gráfica superficial de ella, la podemos graficar con
>>[x,y,z]=sphere(12); [Enter]
>>surf(x,y,z) [Enter]
>>title(‘Grafica de la esfera’) [Enter]
>>grid,xlabel(‘Eje x’),ylabel(‘Eje y’),zlabel(‘Eje z’) [Enter]
Se obtiene la gráfica.
En esta grafica se pueden quitar las líneas negras añadiendo el comando
>>shading flat [Enter]
Computación II Luis Humberto Ortiz Romero 34
Si en lugar de shading flat añadimos
>>shading interp [Enter]
Obtenemos una gráfica en la que los colores se suavizan.
El comando surf produce una gráfica con una iluminación aplicada.
Cambiando por esta instrucción
>>surf(x,y,z) [Enter]
Computación II Luis Humberto Ortiz Romero 35
Grafica de contorno (Contour)
Contour nos da una gráfica en dos dimensiones de los contornos de la gráfica. Por
ejemplo si usamos ahora la función peaks, predefinida en matlab. Por ejemplo,
>>[x,y,z]=peaks(30); [Enter]
>>contour[x,y,z,16] %con 16 líneas de colores [Enter]
>>xlabel(‘Eje x’),ylabel(‘Eje y’) [Enter]
>>title(‘Contorno de peaks’) [Enter]
Nos muestra la gráfica.
Una gráfica similar pero en pseudocolor se obtiene con pcolor.
Otra grafica similar es waterfall, que se obtiene para la función peaks con
>>[x,y,z]=peaks(30); [Enter]
>>waterfall(x,y,z) [Enter]
Nos muestra la Gráfica.
Computación II Luis Humberto Ortiz Romero 36
La función quiver le da líneas dimensionales a una gráfica de contorno con
>>[X,Y,Z]=peaks(30); [Enter]
>>[DX,DY]=gradient(Z,0.5,0.5); [Enter]
>>contour(X,Y,Z,20) [Enter]
>>hold on [Enter]
>>quiver(X,Y,DX,DY) [Enter]
>>hold off [Enter]
Se muestra la gráfica
Clabel añade valores a la altura de una grafica contour. La siguiente gráfica se
obtiene así
>>[x,y,z]=peaks(30); [Enter]
>>cs=contour(x,y,z,10); %para valores numéricos de contour [Enter]
>>clabel(cs) [Enter]
>>xlabel(‘Eje x’), ylabel(‘Eje y’) [Enter]
>>title(‘Contorno de peaks con valores’) [Enter]
Computación II Luis Humberto Ortiz Romero 37
Punto de observación
Si observamos cualquiera de las graficas en tres dimensiones que se han
realizado anteriormente, nos damos cuenta que están siendo vistas por
nosotros desde una posición determinada. Esta posición en coordenadas
esféricas esta dada por la distancia r, y los ángulos de azimut y elevación
se muestra en la figura siguiente:
Computación II Luis Humberto Ortiz Romero 38
La elevación es el ángulo que hace la línea del radio vector que va del observador
al origen de la gráfica con el plano x,y. El origén de la figura esta dado por
(xmin,ymin,Zmin).
El azimut es el ángulo que hace la proyección del radio vector con el eje y. Los
valores nominales de azimut y elevación son de -37.5º y 30º, respectivamente.
Por ejemplo, en la gráfica de mesh vista anteriormente podemos cambiar la
posición del observador cambiando el punto de observación usando el comando
view e indicando los ángulos de azimut y elevación. Por ejemplo, si deseamos ver
desde un azimut de 60º y una elevación 30º usamos
>>view([30 60]) [Enter]
Para obtener una gráfica vista desde otra forma, donde observamos la misma
superficie pero desde otro punto de observación.
Computación II Luis Humberto Ortiz Romero 39
Alternativamente podemos usar el botón de rotación para rotar con el apuntador
la gráfica. Este botón se muestra en la barra de herramientas y una vez
presionado podemos ver la grafica desde distintos puntos de vista con solo
arrastrar el apuntador con el ratón.
Una gráfica de dos dimensiones tiene valores nominales de azimut y elevación de
0o y 90º, respectivamente.
Computación II Luis Humberto Ortiz Romero 40
Herramienta para graficar Funtool
MATLAB tiene una herramienta para observar el comportamiento de una función.
Esta herramienta tiene el nombre de funtool (herramienta de funciones) y se
ejecuta escribiendo en la ventana de trabajo
>> funtool [Enter]
Al ejecutar este comando aparecen tres ventanas, una de ellas contiene 4 espacios
para dar datos de las funciones f(x), g(x), rango de valores de x, y el valor de una
constante a. además contiene teclas para efectuar operaciones con estas funciones.
Computación II Luis Humberto Ortiz Romero 41
Las operaciones van desde calcular la derivada de f hasta calcular la
función composición de f[g(x)].
Los datos sirven para graficar las funciones f y g en las demás ventanas,
respectivamente.
Al abrirse funtool da como valores de las funciones f(x)=x y g(x)=1, pero
estos valores pueden ser modificados por el usuario. Por ejemplo, para
las funciones f(x)=sen(x) y g(x)=1/(x+1) y el valor de a=2 y al presionar el
botón f*g obtenemos su grafica. El botón Cycle nos permite usar distintas
funciones que MATLAB tiene programadas para f y g.
Computación II Luis Humberto Ortiz Romero 42
FIN
Computación II Luis Humberto Ortiz Romero 43