Español English
Showing posts with label Python. Show all posts
Showing posts with label Python. Show all posts

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.

Tuesday, 26 October 2010

Añadir paquetes a Latex para que muestre código Python o Matlab

En este post quiero explicar como se añaden nuevos paquetes a Latex, en este caso Python y Matlab. He escogido estos dos lenguajes ya que son los que utilizo en la Universidad. (Los código que he utilizado los he encontrado en Internet y han sido desarrollados por otras personas, yo solamente enseño como añadirlos al Latex).

Doy por supuesto que hemos seguido los pasos de la entrada: Instalación y configuración de Arch Linux desde cero (2/3) en la sección Oficina.

El primer paso es descagarnos pythonhighlight para los códigos de Python y mcode para los códigos de Matlab.

Una vez hemos descargado estos ficheros abrimos una terminal y ejecutamos las siguientes sentencias:

sudo mkdir /usr/share/texmf/tex/latex/mcode
sudo mkdir /usr/share/texmf/tex/latex/pythonhighlight


Ahora copiamos los ficheros que hemos descargado cada uno en su carpeta:


sudo cp mcode.sty /usr/share/texmf/tex/latex/mcode
sudo cp pythonhighlight.sty /usr/share/texmf/tex/latex/pythonhighlight


Muchos pensareis que ya hemos acabado pero nos falta un pequeño detalle y es que debemos reconfigurar el Latex para que sepa de la existencia de estos nuevos paquetes. Para llevar a cabo esta acción debemos ejecutar el siguiente comando:


sudo texhash


Una vez ha acabado la ejecución ya podemos utilizar los nuevos paquetes. Para ver como se utilizan os dejo a continuación dos ficheros de ejemplo: Ejemplo_Python.tex y Ejemplo_Matlab.tex

Como siempre si tenéis alguna duda escribid un comentario.

NOTA: Esta forma de añadir nuevos paquetes sirve tanto para Arch Linux como para cualquier otra distribución de Linux incluso para Mac OS X. Cambiando la carpeta destino en la cual debemos guardar los nuevos paquetes.