Sei sulla pagina 1di 45

Computación 1

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π

% Generamos el vector x entre -2p y 2pi


x = -2*pi:0.1:2*pi

%dibujamos
plot(x, abs(0.1*x) .* sin(x));

Tener en cuenta que * es el producto de matrices, no funcionará con


vectores, mientras que .* es el producto miembro a miembro de los
elementos de cada vector
Resultado
Varias gráficas a la vez...
Generalicemos nuestra función: a * |x| * sin(x) y
graficámos dando 3 diferentes valores a la variable a.
Por ejemplo:
plot(x, abs(0.1*x) .* sin(x))
plot(x, abs(0.2*x) .* sin(x))
plot(x, abs(0.3*x) .* sin(x))
¿Cómo hacemos si queremos ver los tres gráficos en
una misma pantalla?
hold on
Otras funciones útiles

grid: muestra una cuadrícula en la pantalla del gráfico.
Usando grid on se activa y con off se desactiva

title(‘titulo): Coloca un título al gráfico

xlabel(‘leyenda x’): Coloca una leyenda al eje x

ylabel(‘leyenda y’): Coloca una leyenda al eje y

text(x,y,'texto'): introduce 'texto' en el lugar
especificado por las coordenadas x e y. Si x e y son
vectores, el texto se repite por cada par de elementos. Si
texto es también un vector de cadenas de texto de la
misma dimensión, cadaelemento se escribe en las
coordenadas correspondientes
Otras funciones útiles(II)

legend(): define rótulos para las distintas líneas
o ejes utilizados en la figura.

grid: activa la inclusión de una cuadrícula en el
dibujo. Con grid off desaparece la cuadrícula.
Control de ejes
● Octave ajusta la escala de cada uno de los ejes de modo que
varíe entre el mínimo y el máximo valor de los vectores a
representar. Este es el llamado modo "auto", o modo
automático.
● Para definir de modo explícito los valores máximo y mínimo
según cada eje, se utiliza la función axis:
axis([xmin, xmax, ymin, ymax])
● Mientras que :
axis('auto')
devuelve el escalado de los ejes al valor por defecto o
automático.
Control de ejes(II)

v=axis: devuelve un vector v con los valores [xmin, xmax,
ymin, ymax]

axis(axis): mantiene los ejes en sus actuales valores, de cara
a posiblesnuevas gráficas añadidas con hold on.

axis('ij'): utiliza ejes de pantalla, con el origen en la esquina
superior izda.y el eje j en dirección vertical descendente.

axis('xy'): utiliza ejes cartesianos normales, con el origen en
la esquina inferior izquierda y el eje y vertical ascendente.

axis('equal'): el escalado es igual en ambos ejes.

axis('square'): el escalado es igual en ambos ejela ventana
será cuadrada.
Control de ejes(III)

axis('image'): la ventana tendrá las proporciones de
la imagen que se desea representar en ella (por
ejemplo la de una imagen bitmap que se desee
importar) y el escalado de los ejes será coherente con
dicha imagen.

axis('normal'): elimina las restricciones introducidas
por 'equal' y 'square'.

axis('off'): elimina las etiquetas, los números y los
ejes.

axis('on'): restituye las etiquetas, los números y los
ejes.
Ejemplo
x=-2*pi:.1:2*pi;
y=sin(x)-cos(sqrt(2)*x);
plot(x,y,'r','linewidth',2)
axis tight
grid on
xlabel('eje x')
ylabel('eje y')
title('Grafica de y=sin(x)-cos(sqrt(2)*x)','FontSize',14)
Ejemplo(II)
Colores y trazos
En las siguientes tablas se muestran las posibilidades de colores y estilos
de líneas:
Colores y trazos(II)

>> 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:

Potrebbero piacerti anche