Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Gráficos en 2D y 3D
Necesidades
●
Visualizar tendencias, patrones, frecuencias,
trayectorias o cambios que son difíciles de
encontrar en un conjunto de datos.
●
Una imagen vale más que mil palabras ("como
muestra el gráfico...").
●
Los gráficos ayudan a la toma de decisiones.
Comentarios
●
Los gráficos representados en una computadora son
discretos.
●
A partir de una curva (matemática, materialmente
inexistente), se toman puntos representantes y un
programa se encarga de realizar una interpolación.
●
El resultado de la interpolación se asemeja en mayor
o en menor medida a la curva original.
●
Existen varias formas de realizar interpolaciones.
●
Para representar curvas, en Octave utilizamos una
interpolación lineal para aproximar el gráfico a la
curva original.
Observaciones
●
Cuantos más puntos, mejor será la aproximación
●
Ejemplos:
Conceptos previos
Operador ‘:’
Se trata de una de las formas de definir vectores y matrices
más usada y más fácil de utilizar, dada la rápida
visualización de la salida sin necesidad de ver el resultado
>> x=1:1:10
>> x
x=
1 2 3 4 5 6 7 8 9 10
De alguna manera, el : representa un rango, en este caso
desde 1 hasta 10 y en el centro se coloca el paso (o sea con
que incremento se llega desde 1 hasta 10).
Operador :
Por defecto el paso es 1 pero puede ser cualquier
número entero o real, positivo o negativo:
>> x=10:-1:1
x=
10 9 8 7 6 5 4 3 2 1
Gráficos bidimensionales
Funcioón plot:
●
traza lineas, crea un gráfico a partir de vectores
y/o columnas de matrices, con escalas lineales
sobre ambos ejes.
●
Esta es la función clave de todos los gráficos
bidimensionales en Octave.
plot
●
Ejemplo sencillo:
>> x=[1 3 2 4 5 3]
x=132453
>> plot(x)
plot (II)
Cuando a la función plot() se le pasa un único
vector –real– como argumento, dicha función
dibuja en ordenadas el valor de los n elementos del
vector frente a los índices 1, 2, ... n del mismo en
abscisas.
plot (III)
Una segunda forma de utilizar la función plot() es
con dos vectores como argumentos. En este caso
los elementos del segundo vector se representan
en ordenadas frente a los valores del primero, que
se representan en abscisas.
>> x=[1 6 5 2 1];
>> y=[1 0 4 3 1];
>> plot(x,y)
plot (IV)
●
La función plot() permite también dibujar múltiples
curvas introduciendo varias parejas de vectores como
argumentos.
●
En este caso, cada uno de los segundos vectores se
dibujan en ordenadas como función de los valores del
primer vector de la pareja, que se representan en
abscisas.
>> x=0:pi/25:6*pi;
>> y=sin(x);
>> z=cos(x);
>> plot(x,y,x,z)
plot (V)
Si el usuario no decide otra cosa, para las sucesivas
líneas se utilizan colores que son permutaciones
cíclicas del azul, verde, rojo, cyan, magenta, amarillo
y negro.
Otro ejemplo
gráfico de la función 0.1 * |x| * sin(x)
– graficaremos usando valores para x entre -2π y 2π
%dibujamos
plot(x, abs(0.1*x) .* sin(x));
>> n=1:10;
>> m=1./n;
>> plot(n,m,'o')
Colores y trazos(III)
Función ezplot
La instrucción plot es muy versátil, pero si
queremos producir una gráfica estándar que
represente una sola curva sin complicarnos
generando una tabla de valores, disponemos del
comando ezplot, que traza la curva
correspondiente a una expresión funcional que se
introduce como una cadena de caracteres.
ezplot('exp(sin(x))-1',[0,10])
Función ezplot(II)
Función ezplot(III)
ezplot('x^2+2*x*y-3*x+1',[-4 4 -4 4])
Función subplot
●
Una ventana gráfica se puede dividir en m
particiones horizontales y n verticales, con
objeto de representar múltiples gráficos en ella.
●
Cada una de estas subventanas tiene sus propios
ejes, aunque otras propiedades son comunes a
toda la figura.
subplot(m,n,i)
donde m y n son el número de subdivisiones en
filas y columnas, e i es la subdivisión que se
convierte en activa.
Función subplot(II)
y=sin(x);
z=cos(x);
w=exp(-x*.1).*y;
v=y.*z;
subplot(2,2,1), plot(x,y)
subplot(2,2,2), plot(x,z)
subplot(2,2,3), plot(x,w)
subplot(2,2,4), plot(x,v)
Múltiples gráficas
●
La función plot() permite también dibujar múltiples curvas
introduciendo varias parejas de vectores como argumentos.
●
En este caso, cada uno de los segundos vectores se dibujan
en ordenadas como función de los valores del primer vector
de la pareja, que se representan en abscisas.
●
Observe bien cómo se dibujan el seno y el coseno en el
siguiente ejemplo (usamos el mismo x definido al comienzo):
>> y=sin(x)
>> z=cos(x)
>> plot(x,y,x,z)
Multiples gráficas(II)
Otras funciones gráficas 2-D
● bar(): crea diagramas de barras
● barh(): diagramas de barras horizontales
● bar3(): diagramas de barras con aspecto 3-D
● bar3h(): diagramas de barras con aspecto 3-D
● pie(): gráficos con forma de “tarta”
● pie3(): gráficos con forma de “tarta” y aspecto 3-D
● area(): similar plot(), pero rellenando en ordenadas de 0 a y
● stairs(): función análoga a bar() sin líneas internas
● errorbar(): representa sobre una gráfica –mediante barras– valores de
errores
● hist(): dibuja histogramas de un vector
Ejemplo, opción bar
x=[rand(1,25)*10];
plot(x)
bar(x)
Función fplot
● La función plot vista anteriormente dibuja vectores.
● Si se quiere dibujar una función, antes de ser pasada a plot
debe ser convertida en un vector de valores. Esto tiene algunos
inconvenientes, por ejemplo, el que "a priori" es difícil predecir
en que zonas la función varía más rápidamente y habría por
ello que reducir el espaciado entre los valores en el eje de
abscisas.
● La función fplot admite como argumento un nombre de función
o un nombre de archivo *.m en el cual esté definida una función
de usuario.
● La función puede ser escalar (un único resultado por cada valor
de x) o vectorial. )
Función fplot(II)
fplot('funcion', limites, 'cadena', tol)
●
'funcion': representa el nombre de la función o del
archivo *.m entre apóstrofos (pasado como cadena de
caracteres),
●
limites : es un vector de 2 ó 4 elementos, cuyos valores
son [xmin,xmax] o [xmin,xmax,ymin,ymax],
●
'cadena': tiene el mismo significado que en plot y
permite controlar el color, los markers y el tipo de línea.
●
tol: es la tolerancia de error relativo. El valor por defecto
es 2e-03. El máximo número de valores en x es (1/tol)+1
Gráficas en 3D
plot3()
●
La función plot3() dibuja curvas en tres dimensiones,
o ternas de valores arbitrarios sin necesidad de que
formen una superficie.
●
Por ejemplo, el código siguiente dibuja una espiral en
tres dimensiones:
fi=[0:pi/20:6*pi];
plot3(cos(fi),sin(fi),fi,'b')
Gráficas en 3D(II)
Gráficas de malla
●
La funcion mesh() dibuja un gráfico de malla
en la forma Z=f(X,Y), tomando la Z como
elevación y haciendo el color del mallado
proporcional al valor de Z.
●
Si Z es una matriz cuyas dimensiones son [m,n],
el vector de las coordenadas x tendrá que
tener m elementos, y el vector de las
componentes y tendrá n elementos.
Gráficas de malla(II)
●
mesh(Z): dibuja el gráfico de malla 3D correspondiente
a Z=Z(x,y) haciendo x=1:m e y=1:n con [m, n] = size(Z). El
color es proporcional al valor de Z.
●
mesh(X, Y, Z): dibuja el gráfico de malla 3D con el color
determinado por el valor de Z.
– Si X e Y son vectores las dimensiones tienen que
cumplir: m=length(X), n=length(y) y [m, n]=size(Z). En
este caso, los puntos de la superficie serán (X(j), Y(i),
Z(i,j)).
– Si X, Y, Z son matrices, sus dimensiones serán iguales.
En este caso los puntos del mallado serán: (X(i,j), Y(i,j),
Z(i,j))
Gráficas de malla(III)
●
meshgrid(x,y): Dados dos vectores de
coordenadas x e y, la función meshgrid()
devuelve una pareja de matrices Mx, My que se
corresponden con la red de puntos de
intersección de las dos series x e y. Estas
matrices se pueden pasar directamente a la
función mesh() y también se pueden utilizar para
calcular los valores de Z si conocemos su
expresión en la forma Z=f(X,Y).
Ejemplo (mesh)
u=-8:0.5:8;
v=u;
[U,V]=meshgrid(u,v);
R=sqrt(U.^2+V.^2)+eps;
W=sin(R)./R;
mesh(W)
Ejemplo (surf)
u=-8:0.5:8;
v=u;
[U,V]=meshgrid(u,v);
R=sqrt(U.^2+V.^2)+eps;
W=sin(R)./R;
surf(W)
Ejemplo(meshc())
meshc(): Es similar a mesh() pero dibuja además las curvas de nivel sobre el plano x-y: El
resultado se puede ver en la siguiente figura: