Manual de Scilab/Xcos/Gráficos

← Vectores y matrices Gráficos Funciones →
Manual de Scilab/Xcos


Gráficos en 2 D

editar
 

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

editar

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

editar
 

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)

editar

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

editar

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.

 

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

editar

Dadas 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

editar

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

editar

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:

 


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

editar

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:

 
 
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);

 

Math rendering in Scilab graphics [1]

Tutorial de como generar gráficos en 2d y 3d [2]

Referencias

editar