6.
Graficos
Octave es una poderosa herramienta para manipular datos gracias a su ca-
pacidad de calculo numerico. Sin embargo, ver resultados numericos no siempre
es util. En muchsimos casos resulta de mayor utilidad interpretar los resultados
de forma grafica. Para ello Octave cuenta con una gran variedad de funciones
destinadas a realizar graficos. Entre ellas encontramos plot(), stem(), bar(),
6 GRAFICOS
polar(), semilogx(), y muchas otras. A modo de ejemplo, se explicara la fun-
cion plot() que sera de mayor utilidad en la materia, pero se debe tener en
cuenta que el uso de las otras funciones destinadas a realizar graficos es similar.
La funcion plot() puede tomar multiples argumentos, sin embargo en su
forma mas simple tiene un unico argumento, los valores del eje y.
>> y=(1:10).^2;
>> plot(y);
>>
De esta manera se obtiene como resultado el siguiente grafico.
En este caso, el eje y toma los valores del vector y mientras que el eje x rep-
resenta el xesimo elemento del vector. Esta asignacion al eje x puede no ser
representativa de los valores graficados, por ello la funcion plot() nos permite
asignarle valores especficos a cada uno de los ejes, como se ve en el siguiente
ejemplo.
>> x=(-1:0.1:1);
>> y=x.^2;
>> plot(x,y);
>>
6 GRAFICOS
Suele ser necesario tener que graficar mas de una curva en un mismo grafico.
Hay dos formas de hacer esto y cada una tiene sus ventajas y desventajas.
>> x1=(0:0.1:1);
>> y1=x1.^2;
>> x2=x1;
>> y2=x2.^3;
>> plot(x1,y1,x2,y2);
>>
6 GRAFICOS
>> x1=(0:0.1:1);
>> y1=x1.^2;
>> x2=x1;
>> y2=x2.^3;
>> hold on;
>> plot(x1,y1);
>> plot(x2,y2);
>>
En el primer ejemplo podemos observar que las curvas se diferencian por su
color, cosa que no ocurre en el segundo caso. Ademas en el primer caso vemos
que el grafico se produce con una unica invocacion a la funcion plot(). Sin
embargo, es necesario que todas las variables esten disponibles al momento de
realizar el grafico, lo cual puede no ocurrir en algunos casos.
En el segundo ejemplo para graficar simultaneamente distintas curvas es
necesario indicarle al programa que una nueva invocacion a plot() no debe
borrar los graficos realizados anteriormente. Esto se logra con el commando
hold on. De forma similar, si es necesario volver a indicarle al programa que
solo debe graficar la ultima invocacion de la funcion plot(), se debe usar el
comando hold off. Por defecto, el commando hold se encuentra en el estado
off.
El segundo inconveniente en la segunda implementacion es que ambas cur-
vas se encuentran graficadas con un mismo color. Como es de esperarse, uno
puede elegir con que color graficar las curvas. Para ello, es necesario dar un
tercer argumento a la funcion plot(). Este tercer argumento es una cadena de
caracteres que le da indicaciones a la funcion sobre la estetica de la curva a
graficar. La cadena de caracteres tiene tpicamente tres caracteres que definen
el color, el estilo de lnea entre puntos y el tipo de marcador (ver cuadro 1).
Por ultimo, existen otros argumentos que pueden ser especificados para con-
trolar otros aspectos visuales del grafico como el espesor de la lnea, el tamano
del marcador y los colores del marcador entre otros. Estos argumentos van de a
pares, donde el primero indica la propiedad y el segundo el valor que se le asigna
6 GRAFICOS
Estilo de Lnea Tipo de Marcador Color
Caracter Descripcion Caracter Descripcion Caracter Descripcion
- Lnea solida + Signo mas r Rojo
--3 Lnea a trazos o Crculo g Verde
-.3 Lnea trazo-punto * Asterisco b Azul
:3 Lnea punteada . Punto c Cyan
none Sin lnea x Cruz m Magenta
s3 Cuadrado y Amarillo
d3 Diamante k Negro
^ Triangulo w Blanco
v3 Triangulo
>3 Triangulo
<3 Triangulo
p3 Pentagrama
h3 Hexagrama
none Sin marcador
Cuadro 1: Descripcion de caracteres para el formato de los graficos
(por ejemplo: plot(x,y,propiedad1,valor1,propiedad2,valor2,...)).
Para mas detalles puede referirse a
[Link]
El siguiente es un ejemplo de como dar formato a distintas curvas en un
mismo grafico.
>> t=(0:0.2:10);
>> f1=100;f2=200;f3=300;f4=50;
>> x1=sin(2*pi*f1*t*1e-3);
>> x2=sin(2*pi*f2*t*1e-3);
>> x3=sin(2*pi*f3*t*1e-3);
>> x4=sin(2*pi*f4*t*1e-3);
>> hold on
>> plot(t,x1,r,linewidth,3);
>> plot(t,x2,bo,markersize,15);
>> plot(t,x3,k^-,markersize,15);
>> plot(t,x4,gx,markersize,15);
>>
3 Solo MATLAB
6 GRAFICOS
Ahora las curvas tienen distinto formato, sin embargo todava faltan ele-
mentos en el grafico. Una persona que observe este grafico puede preguntarse:
Que se muestra en este grafico? Que representan los ejes del grafico? Que rep-
resenta cada una de las curvas? Para responder estas preguntas es necesario
agregar las etiquetas correspondientes que brinden la informacion necesaria.
Para ello existen un grupo de funciones que se encargan de agregar estas eti-
quetas. Las mas importantes son: title(), xlabel(), ylabel y legend(). En
el siguiente ejemplo se agregan todas estas etiquetas al ultimo grafico.
>> title(Funciones armonicas a distinta frecuencia)
>> xlabel(Tiempo [ms])
>> ylabel(Amplitud)
>> leyenda1=sprintf(f1 = %u,f1);
>> leyenda2=sprintf(f2 = %u,200);
>> leyenda3=sprintf(f3 = %u,300);
>> leyenda4=sprintf(f4 = %u,50);
>> legend(leyenda1,leyenda2,leyenda3,leyenda4)
>> legend(boxon)
>> legend(right)
>>
6 GRAFICOS
Existen otras funciones para manipular propiedades de los graficos como
axes(), axis(), grid y otras. Para conocer como funcionan, se recomienda
consultar el comando help.
Como ultimo detalle, mediante el comando figure() pueden generarse dis-
tintos graficos, es decir, nuevas ventanas en donde graficar las distintas variables.
Como argumento (opcional) esta funcion toma el numero de identificacion de
cada ventana. Si ningun numero es especificado, por defecto se toma el siguiente
valor disponible. En el siguiente ejemplo
>> figure(2)
>> figure
>> figure
>>
primero se genera la Figura 2, luego la Figura 1 y finalmente la Figura 3.
>> figure
>> figure
>> figure(1),hold on;
>> plot(t,x1,b,linewidth,3),plot(t,x2,r,linewidth,3);
>> figure(2),hold on;
>> plot(t,x3,b,linewidth,3),plot(t,x4,r,linewidth,3);
>>
En este ultimo ejemplo, primero se generan dos figuras. Luego, se activa la
figura 1 en donde se grafican en forma simultanea las variables x1 y x2 (las
dos funciones seno). Finalmente se activa la figura 2 en donde se grafican en
forma simultanea las variables x3 y x4 (las dos funciones coseno).
6.1. Exportar graficos
Una vez que el grafico esta terminado, es necesario exportarlo para poder
utilizarlo en un documento. La funcion print() se encarga de imprimir el
grafico a un archivo. Esta funcion tiene numerosos usos ademas de exportar
6 GRAFICOS
graficos, los cuales no seran explicados en este tutorial. Para exportar a un
archivo, es necesario primer especificar la ubicacion y nombre del archivo. Si
este argumento no es especificado, el programa toma por defecto que el grafico
debe ser impreso por la impresora. El segundo argumento especifica las opciones
de impresion. Para indicar que la figura debe ser guardada como un archivo
especfico debe usarse la opcion -dXXX donde XXX es el tipo de archivo. Los
mas comunes son: ps, eps, png, jpg, gif, pdf. Para mas informacion consultar
help print. A continuacion se muestra a modo de ejemplo como se exporta el
grafico de las funciones armonicas en formato PNG.
>> print(figura [Link],-dpng)
>>