viernes, 21 de junio de 2013

Scilab- Comando colormap(), mesh y meshgrid para gráficas de dos variables.

Un atractivo de Scilab es la posibilidad de hacer gráficos de funciones de dos variables y poder usar una paleta de colores predeterminadas, haciendo muy atractiva su salida por pantalla. Para ello se puede usar una simple combinación de las funciones meshgrid, que creea una matriz con los datos de dos variables previamente definidas, mesh, que realiza una gráfica de la función con Z=f(X,Y), con X e Y variables definidas por la función meshgrid, y con la función xset("colormap",mapa_elegido(n)), siendo n un número, correspondiéndose con el número de colores de la paleta, y mapa_elegido() una función de Scilab que permite usar una selección determinada de colores (asignándose estos en función de la posición de cada proporción de superficie dada por mesh()). Algunas de estos mapas son coppercolormap(), oceancolormap(), bonecolormap(), springcolormap(), etc. Estos pueden consultarse en el Navegador de ayuda. Se ha usado las referencias de [1] sobre este tema en las páginas 

// pruebacolormap().sce

// Prueba de gráficos con colormap()
// Definimos la función a usar f:R^2 -->R
// [sin(x.*y)] y el dominio de esta (x,y) 
x=-3:.1:3;
y=-3:.1:3;
//empleamos el comando
//meshgrid(x,y), para crear dos matrices con todos
//los valores necesarios para dibujarla 
[X,Y]=meshgrid(x,y);
// y dibujamos la función (sin colores)
Z=sin(X.*Y);
mesh(X,Y,Z);
// Empleamos xset("colormap",mapa_de_colores(n)) 
// y el comando surf para dibujar la gráfica de la función f con colores.
n=34 //numeros de colores a usar
// Usamos oceancolormap()
// y obtenemos la superficie de la función en tonos azules.
scf(1)
clf(1)
xset("colormap",oceancolormap(n))
surf(X,Y,Z)
// Usamos coppercolormap()
// y obtenemos la superficie en tonos marrones
scf(2)
xset("colormap",coppercolormap(n))
surf(X,Y,Z)

Código de Scilab descrito anteriormente. Código por el autor.


Así pues, si ejecutamos el programa anterior en Scilab, obtenemos las siguientes imágenes. 







Resultados del programa anterior. Códigos e imágenes por el autor.

Referencias

[1]: Venturin, Manolo. Plotting with Scilab, Openeering Totorials. Openeering.

R- Ejecutar un script redactado con Notepad++

La potencia de R lo hace un programa muy atractivo. Uno de sus inconvenientes, provocado por su implantación de tipo lenguaje interpretado o interpretación pura, que, como JavaScript o PHP, no requiere de un compilador para crear su ejecutable, sino que cada comando es evaluado, y si es correcto, ejecutado. Sino, lanza un mensaje de error y se interrumpe el programa
Esto resulta especialmente molesto en caso de tener un programa de tamaño elevado (por ejemplo, con más de 60 lineas de código. Una experiencia personal, bastante funesta, fue el redactar un trabajo de clase para la materia Estadística Básica en la que nos introducían al uso de R con 70 lineas de código R para resolver seis problemas relacionados con métodos estadísticos, cuya depuración se hizo instrucción a instrucción,volviendo a repetir cada comando en caso de error). Si bien es cierto que la memoria del programa permite repetir tantas veces una función o volver a editarla pulsando repetidamente la flecha “arriba” de teclado, en ocasiones se vuelve tedioso. Un forma agradable de trabajar es usar Notepad++. 

Este programa es en principio similar al Bloc de notas de Windows; es un generador de texto plano, pero permite la posibilidad de redactar un archivo con código fuente de un lenguaje de programación determinado, marcando las funciones especiales, las palabras reservadas, las cifras y valores numéricos y las sangrías. En [1] se puede obtener información sobre Notepad++ y su enlace para descargarlo.

Podemos redactar el programa con Notepad++. Una vez abierto, se selecciona en la opción de Lenguajes la etiqueta R. Redactamos un pequeño programa, que se basará en la definición de asociación de un valor a una variable, y posteriormente obtenerlo por pantalla. Vemos cómo aparecen señaladas en colores, si están bien redactadas, las palabras reservadas del lenguaje. Después lo modificaremos para obtener otro string con la función sub(cadena_original, cadena_nueva, string).



Programa a usar desde Notepad++. Código e imagen por el autor.

Una vez hecho, lo guardamos con extensión .r y lo ejecutamos en la GUI de R. Una vez abierto R, en la barra de herramientas, pinchamos en la pestaña Archivo y hacemos clic en Abrir script... (para los usuarios de habla hispana, File y Open script en las versiones originales, donde las etiquetas estaban en inglés) Se abre un cómodo buscador que nos permitirá localizar el código fuente recientemente hecho y al seleccionarlo, se mostrará este en el programa R desde su editor, cómodamente ejecutable.



El programa en el editor de R GUI. Imagen y código por el autor.

Así pues, si se sigue estos pasos con el ejemplo propuesto, un programa que saca por consola el mensaje Hola mundo desde R GUI! Lo modifica y saca este por pantalla (las funciones usadas y el tratamiento de los strings han sido elaborados a través de las conclusiones expuestas en [2]), obtenemos en la consola el siguiente resultado:

R version 3.0.0 (2013-04-03) -- "Masked Marvel"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R es un software libre y viene sin GARANTIA ALGUNA.
Usted puede redistribuirlo bajo ciertas circunstancias.
Escriba 'license()' o 'licence()' para detalles de distribucion.

R es un proyecto colaborativo con muchos contribuyentes.
Escriba 'contributors()' para obtener más información y
'citation()' para saber cómo citar R o paquetes de R en publicaciones.

Escriba 'demo()' para demostraciones, 'help()' para el sistema on-line de ayuda,
o 'help.start()' para abrir el sistema de ayuda HTML con su navegador.
Escriba 'q()' para salir de R.

[Previously saved workspace restored]

> #--------------------------------------------------
> # Programa HolamundoR
> # Entrada (Teclado): Un string con la frase
> # "Holamundo desde R!"
> # Salida (Pantalla): el string y uno obtenido con 
> # sub(), que modifica el primero
> #--------------------------------------------------- 
> first <-"Hola mundo desde R GUI!"
> first
[1] "Hola mundo desde R GUI!"
> class(first)
[1] "character"
> second <-sub("R GUI","R con Notepad++",first)
> second
[1] "Hola mundo desde R con Notepad++!"

Aspecto de la consola tras las ejecución del programa usado (en azul las instrucciones). 


Referencias

[1]: Notepad++, disponible (con información) desde http://notepad-plus-plus.org/
[2]: R para Principiantes, Emmanuel Paradis. Traducción por Jorge A. Ahumada. Texto de difusión libre, extraído de http://cran.r-project.org/doc/contrib/rdebuts_es.pdf