Manual de Scilab/Xcos/Gráficos
Gráficos en 2 D
editarEn 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
editarLos menús se despliegan de las ventanas de gráficos se abren al pulsar sobre ellos mostrando las siguientes opciones.
Representación de rectas
editarUna 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)
editarDada 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
editarLa 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.
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
editarDadas las siguientes funciones:
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
editarEn 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
editarMalla
editarEl 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:
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
editarPara 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:
Note en este gráfico que las leyendas de los gráficos son escritas utilizando la tipografía de Latex, como se encuentra explicado en el link al final de este capitulo.
Código en Scilab:
a1=1;a2=-10;a3=1;a4=12; b1=5;b2=4;b3=8;b4=-9;
clf
t=linspace(-5,5,30);
function z=my_surface(x, y),z=a1*x^2+a2*x*y+a3*y^2+a4,endfunction
function z1=my_surface1(x, y),z1=b1*x^2+b2*x*y+b3*y^2+b4,endfunction
subplot(3,2,1)
contour(t,t,my_surface,10)
xtitle('$\textstyle z=a_1*x^2+a_2*x*y+a_3*y^2+a_4$')
subplot(3,2,2)
contour(t,t,my_surface1,10)
xtitle('$\textstyle z_1=b_1x^2+b_2*x*y+b_3*y^2+b_4$')
xset("colormap",[jetcolormap(64);hotcolormap(64)])
subplot(3,2,3)
colorbar(0,2,[1,64])
Sfgrayplot(x,y,my_surface,strf="041",colminmax=[1,64])
xtitle('$\textstyle z=a_1*x^2+a_2*x*y+a_3*y^2+a_4$')
subplot(3,2,4)
colorbar(0,2,[1,64])
Sfgrayplot(x,y,my_surface1,strf="041",colminmax=[1,64])
xtitle('$\textstyle z_1=b_1x^2+b_2*x*y+b_3*y^2+b_4$')
drawnow() ;
f1=a1*x1.^2+a2*x1.*x2+a3*x2.^2+a4;
f2=b1*x1.^2+b2*x1.*x2+b3*x2^2+b4;
[X,Y]=meshgrid(-5:.3:5,-5:.3:5);
Z=a1*X.^2+a2*X.*Y+a3*Y.^2+a4;
Z1=b1*X.^2+b2*X.*Y+b3*Y^2+b4;
subplot(3,2,5)
mesh(X,Y,Z);
subplot(3,2,6);
mesh(X,Y,Z1);
Links
editarMath rendering in Scilab graphics [1]
Tutorial de como generar gráficos en 2d y 3d [2]