Español English

Thursday 24 January 2013

Gráficas en Python

Otra entrada sobre Python, ésta vez sobre como hacer gráficas muy chulas y de forma sencilla.

Necesitamos tres paquetes para poder hacer las figuras con los ejemplos que voy a describir. Como siempre los pasos a seguir son en Arch Linux aunque deben ser fáciles de reproducir en otros sistemas operativos.



[maitesin@Malesero ~]$ yaourt -S python2-numpy python2-matplotlib
[sudo] password for maitesin:
resolviendo dependencias...
verificando conflictos...

Objetivos (9): python2-dateutil-2.1-6  python2-dbus-1.1.1-2  python2-pyparsing-1.5.7-1  python2-pyqt-4.9.6-1  python2-pytz-2012j-1
               python2-sip-4.14.2-1  python2-six-1.2.0-2  python2-matplotlib-1.2.0-8  python2-numpy-1.7.0-1

Tamaño de descarga:     30,17 MiB
Tamaño instalado:       95,95 MiB

¿Continuar con la instalación? [S/n]



En mi caso yo uso Python 2 si queréis utilizar éstos módulos en Python 3 sólo tenéis que eliminar el 2 del nombre del paquete. Una vez instalado se usa como el en siguiente ejemplo:


#!/usr/bin/env python
#Graficas para los grafos con ciclos

from numpy import *
from pylab import *
from matplotlib import rc, rcParams

#rc('text',usetex=True) #Para habilitar la escritura en Latex en los textos
rc('font',**{'family':'serif','serif':['Computer Modern']})

# Read in data from an ASCII data table
binomial = genfromtxt('../prim/ciclos/final_binomial.txt')
lazy = genfromtxt('../prim/ciclos/final_lazy.txt')
fibonacci = genfromtxt('../prim/ciclos/final_fibonacci.txt')

#Plot results
plot(binomial[:,0], binomial[:,1], 'o-', label='Binomial')
hold(True)
plot(lazy[:,0], lazy[:,1], 'o-', label='Lazy')
plot(fibonacci[:,0], fibonacci[:,1], 'o-', label='Fibonacci')

# Options
xlabel(r'Tamaño grafo')
ylabel(r'Tiempo(ms)')
title(r'Grafos Ciclos')
legend(loc='best')

# Turn on a grid
grid(True)

# Save the figure in a separate file
savefig('ciclos.eps') # soporta diferentes formatos jpg, png, eps...

# Draw the plot to the screen
show()



Creo que no hace falta describir que es cada parte del o como funciona el código. El resultado de la ejecución la podemos ver en la siguiente imagen.

Ya me contáis como os ha ido ;)

Wednesday 23 January 2013

Parsear opciones en Python

A pesar de que después los amigos me pincharán voy a escribir algunas cosillas que he aprendido ha hacer con python :)

Nunca ha sido demasiado de mi agrado, más que nada porque estoy acostumbrado a realizar las cosas como en C/C++ y claro la deformación profesional...

Bueno a lo que íbamos, por un trabajo que he tenido que utilizar python y quería poder dar diferentes opciones al programa. Entonces encontré el siguiente módulo: optparse

Funciona como en el siguiente ejemplo:


#!/usr/bin/python
from optparse import OptionParser

parser = OptionParser()
parser.add_option("-s", "--start", dest="start", help="Ejemplo de opcion", metavar="Start")
parser.add_option("-f", "--finish", dest="finish", help="Otro ejemplo de opcion", metavar="Finish")
(options, args) = parser.parse_args()

if __name__ == "__main__":
    if options.start != None:
        print "Tenemos opcion en Start", options.start
    else:
        print "No hay opcion en Start"
    if options.finish != None:
        print "Tenemos opcion en Finish", options.finish
    else:
        print "No hay opcion en Finish"
    print "En argumentos tenemos", args



Podemos ver en el ejemplo que los parámetros necesarios para añadir una nueva opción son las siguientes:

add_option(opción_corta, opción_larga, atributo_destino, mensaje_de_ayuda, metavar_usado_en_la_ayuda)


Un par de ejecuciones del ejemplo son las siguientes:


[maitesin@Malesero ~]$ ./ejemplo.py -s 12 -f Hola Adios
Tenemos opcion en Start 12
Tenemos opcion en Finish Hola
En argumentos tenemos ['Adios']
[maitesin@Malesero ~]$ ./ejemplo.py -s 12 Adios
Tenemos opcion en Start 12
No hay opcion en Finish
En argumentos tenemos ['Adios']
[maitesin@Malesero ~]$ ./ejemplo.py
No hay opcion en Start
No hay opcion en Finish
En argumentos tenemos []
[maitesin@Malesero ~]$ ./ejemplo.py --help

Usage: ejemplo.py [options]

Options:
  -h, --help            show this help message and exit
  -s Start, --start=Start
                        Ejemplo de opcion
  -f Finish, --finish=Finish
                        Otro ejemplo de opcion




Espero que os sirva ésto tanto como a mi.

Latex cambiar cuadro por tabla

Me he propuesto escribir más en el blog, así que si no es algo muy especial las entradas serán más seguidas pero con menos contenido.

Ahora pasamos ya al lío. Me he encontrado con que en Latex cuando creamos una tabla nos dice de nombre Cuadro X, en vez de Tabla X.

La solución que he encontrado es editar el fichero de configuración del idioma español en Latex, no os asustéis que es fácil.

Editamos el fichero: /usr/share/texmf-dist/tex/generic/babel/spanish.ldf (en Arch Linux) y en la línea 127 encontramos lo siguiente:

\def\es@tablename{Ccuadro}


Simplemente lo cambiamos por:


\def\es@tablename{Ttabla}


Una vez hecho esto ya os pondrá las tablas como Tabla y no como Cuadro.

Como siempre, cualquier duda a los comentarios ;)