# Manual de Scilab/Xcos/Gráficos
## Gráficos en 2 D

En una ventana gráfica, como la de la derecha, se puede ver una ventana que se puede desplazar por la pantalla y que se puede cambiar de tamaño, en su parte superior se puede ver una barra de menús desplegarables y unas herramientas relacionadas con las cualidades del gráfico.
Código para Scilab que genera la imagen con la función plot de los dos ejes cartesianos o una circunferencia:
    // 'b'-blue, 'c'-cyan, 'g'-green, 'k'-blak, // 'm'-magenta, 'r'-red, 'w'-white, 'y'-yelow. scf(0); clf(0); r=2; //radio esc=1; plot ([-4*esc,4*esc],[0,0],"m"); // eje x plot ([0,0],[-3*esc,3*esc],"c"); // eje y xtitle ("Circunferencia", 'eje x', 'eje y'); k=0:0.01:2*%pi; plot (r.*cos(k),r.*sin(k),"b"); //circunferencia legend ("color del eje x","color del eje y","Circunferencia");
* scf(0): señala y en su caso genera una ventana de gráfica numerada cono 0,(cero), Puede haber varias ventanas abiertas simultaneamente, esta instrucción señala la actual, en la que se representaran las graficas.
* clf(0): limpia, borra el contenido de la ventana de gráfico 0, clf borra el contenido de la ventana gráfica actual.
* plot: es la instrucción de representar la gráfica de una función, hay varias instrucciones de representación gráfica de 2D y 3D.
* xtitle: indica el titulo de la gráfica y de los ejes, como texto, el texto puede estar entre dobles comillas o comillas simples
* legend: leyenda nota con una muestra del trazo y su denominación.
La secuencia de instrucciones se pueden teclear una a una en la consola, o de forma más compacta con SciNotes, desde Aplicaciones/SciNotes, que es un editor de textos adaptado al código de Scilab.
El código escrito en SciNotes tiene que ser guardado como archivo antes de ser ejecutado como programa. No es necesario recordar que Scilab es un interprete de instrucciones y se ejecutan las instrucciones desde ese testo.

### Cajas de menús

Los menús se despliegan de las ventanas de gráficos se abren al pulsar sobre ellos mostrando las siguientes opciones.

### Representación de rectas

Una forma sencilla y muy útil de gráfica es la recta, el trazo de la recta se hace definiendo los intervalos de cada uno de los ejes. Un intervalo se representa entre corchetes el inicio y fin del intervalo.
    // 'b'-blue, 'c'-cyan, 'g'-green, 'k'-blak, // 'm'-magenta, 'r'-red, 'w'-white, 'y'-yelow. scf(0); clf(0); esc=2; n=5; //rotaciones plot ([-4*esc,4*esc],[0,0],"c"); // eje x plot ([0,0],[-3*esc,3*esc],"c"); // eje y xtitle ("Rectas","eje x","eje y"); plot ([-6,6],[-4,3],'g'); plot ([-5,7],[3,-1],'r');
La instrucción plot ([-6,6],[-4,3],'g'); indica la representación gráfica donde x toma los valores del intervalo [-6,6], x toma los valores de -6 a 6 y la coordenada y toma los valores de -4 a 3, 'g' indica el color verde del trazo.

### Representación de funciones: y=f(x)

Dada una función: y=f(x), donde x toma valores en un vector dado, e y el valor que le corresponde según la función.
    // 'b'-blue, 'c'-cyan, 'g'-green, 'k'-blak, // 'm'-magenta, 'r'-red, 'w'-white, 'y'-yelow. scf(0); clf(0); esc=2; plot ([-4*esc,4*esc],[0,0],"c"); // eje x plot ([0,0],[-1*esc,5*esc],"c"); // eje y xtitle ("Función y=f(x)","eje x","eje y"); x=-3:0.01:3; plot (x,x^2,'g');

### Gráfica de la función seno

La representación de las funciones seno y coseno:
    // 'b'-blue, 'c'-cyan, 'g'-green, 'k'-blak, // 'm'-magenta, 'r'-red, 'w'-white, 'y'-yelow. scf(0); clf(0); esc=1; plot ([-4*esc,4*esc],[0,0],"c"); // eje x plot ([0,0],[-3*esc,3*esc],"c"); // eje y xtitle ("Función y=f(x)","eje x","eje y"); x=-3:0.01:3; plot (x,sin(%pi*x),'g'); plot (x,cos(%pi*x),'r');
Dada la siguiente función se pretende obtener su gráfica.
    $f(x)=sen(x)$
Código para Scilab
    x=[0:0.1:3*%pi]'; //Genero la variable x que va desde 0 a 3 * pi y con intervalos de 0,1. plot2d(x,sin(x)); //Ploteo de la función. xlabel( " Tiempo " ) ; ylabel(" Tensión " ) ; title("Función sinusoidal" ) ; //titulo y etiquetas en los x e y. a=gca; a.grid=[1,2]; //Activo el grid uno de color negro y otro de color azul.

### Varias funciones en un mismo gráfico

Dadas las siguientes funciones:
    $f_{1}(x)=sen(x)$
    $f_{2}(x)=sen(2*x)$
    $f_{3}(x)=sen(3*x)$
Código para Scilab:
    x=[0:0.1:3*%pi]'; plot2d(x,[sin(x) sin(2*x) sin(3*x)])

### Gráficas de mediciones experimentales

En este caso la variable media fue tomada por un sistema con un microcontrolador y transferida a la pc a través de una interfaz rs-232. El archivo de texto solo tiene los valores de la variable medida como se muestra a continuación: Archivo 1ve10-1.txt 6
7
6
6
7
7
7 ... El archivo tiene 1000 registros.
Código en Scilab:
    x=(0:.5:999.5)'; fd=mopen('1ve10-1.txt','r'); y10=mfscanf(-1,fd,"%f"); mclose(fd); xlabel("tiempo"); ylabel("grados"); title("tp=0.36;ts=0.27;p=8"); plot(x/1000,y10t,'+');

## Gráficos en 3D
### Malla

El comando mesh dibuja una superficie parametrica usando un grid rectangular definido por las coordenadas x e y. Por ejemplo si se quisiera representar la siguiente función:
    $q(x)=a_{1}x^{2}+a_{2}y^{2}+a_{3}xy+a_{4}x+a_{5}y+a_{6}$
Código en Scilab:
    a1=0.65812; b1=1.34208; c1=-0.46980; d1=0.14074; e1=-0.20124; f1=0.30487; [X,Y]=meshgrid(-2:.1:2,-2:.1:2); Z=a1*X.^2+b1*Y.^2+c1*X.*Y+d1*X+e1*Y+f1; xtitle('z=a1*X.^2+b1*Y.^2+c1*X.*Y+d1*X+e1*Y+f1'); mesh(X,Y,Z);

### Curvas de nivel

Para poder visualizar el mínimo o máximo de una función puede llegar a ser más útil observar las curvas de nivel.
El siguiente código nos permite hacer un multiploteo de varios gráficos en la misma ventana. Las funciones son:
    $z=a_{1}*x^{2}+a_{2}*x*y+a_{3}*y^{2}+a_{4}$
    $z_{1}=b_{1}x^{2}+b_{2}*x*y+b_{3}*y^{2}+b_{4}$
Código en Scilab:

## Links

Math rendering in Scilab graphics
Tutorial de como generar gráficos en 2d y 3d