Sunteți pe pagina 1din 107

TUTORIAL DE MATPLOTLIB

Universidad Nacional de
Colombia
M a t e r i a l d e ap o y o e l a b o r a d o c o m o a p o y o a
la materia
Mtodos Numricos
D i e g o C a m i l o P e a Ra m r e z ( d o c e n t e )

Twitter: @nervencid
1

CONTENIDO
INTRODUCCION
MATPLOTLIB
INTRODUCCIN A PYPLOT
CREACIN DE MULTIPLES GRAFICAS (Subplot)
EDITANDO PROPIEDADES DE LAS GRAFICAS
MANEJO DE EVENTOS
MANEJO DE EVENTOS: Picking
MANEJO DE EVENTOS: Dragg
MANEJO DE EVENTOS: Hover ('mouse enter and
leave')
ANIMACIONES

CONTENIDO
PLOT 3D
CREACIN DE INTERFACES DE USUARIO (UI)
CREACIN DE INTERFACES DE USUARIO (UI):
Widgets
CREACIN DE INTERFACES DE USUARIO (UI):
Tkinter
Otras Interfaces de usuario (UI)
BIBLIOGRAFIA
SOBRE EL AUTOR Y EL CONTENIDO

INTRODUCCIN
Como hemos podido darnos cuenta Python es una
herramienta muy completa y autnoma; ya que nos
permite hacer varias actividades sin depender de
libreras externas o software de terceros. Sin
embargo para aplicaciones ms especializadas como
lo son por ejemplo: anlisis matemticos, hacer
grficas de funciones o resolver ecuaciones,
debemos acudir a libreras externas de terceros.
A continuacin haremos una breve introduccin a
estas libreras que al igual que Python son de cdigo
abierto y nos dan prestacin que no podemos lograr
en otros lenguajes programacin.
4

MATPLOTLIB
Matplotlib es una librera de
cdigo abierto creada por el
fallecido John Hunter(1968-2012),
la cual posee un conjunto de
herramientas para poder hacer
grficas en 2D y 3D, como
alternativa a MATLAB en cuanto
a creacin de grficos,
recientemente se le a aadido la
posibilidad de interaccionar con
libreras como qt, Gtk, entre otras
para poder hacer interfaces de
usuario personalizadas [1].
5

MATPLOTLIB
MATPLOTLIB esta compuesta de tres elementos
fundamentales [2]:

PYLAB: Es un conjunto de funciones que permiten crear


grficas (plot's ) similares a los de MATLAB.
MATPLOTLIB API: Es una interfaz que contiene clases
que crean y gestionan imgenes, textos, figuras y plot's.
BACKEND: Nos permite extender MATPLOTLIB a otras
funcionalidades 'extra', como por ejemplo exportar a
archivos 'PNG, PDF, SVG, etc...' o crear interfaces de
usuarios con libreras especializadas como 'wxpython' o
'pygtk'

INTRUCCIN A PYPLOT
PYPLOT es un conjunto de comandos que
permiten trabajar de manera similar a
MATLAB, cada funcion de 'pyplot', genera
algn tipo de cambio en la figura como por
ejemplo: decorar la figura, agregar texto, crear
graficas secundarias, etc...[2]
Para el siguiente ejercicio cree un nuevo
archivo '.py' bien sea utilizando el editor
integrado en Python o el entorno de desarrollo
de su preferencia.
7

INTRUCCIN A PYPLOT

INTRUCCIN A PYPLOT
Al ejecutar el programa (F5) deberamos obtener el siguiente
resultado:

INTRUCCIN A PYPLOT
Notese que 'Matplotlib' genera su propia ventana la cual por lo
general posee una barra de herramientas en la parte inferior los
cuales son:
'Home': Renderiza la grfica a sus configuraciones
originales deshaciendo operaciones de 'zoom' y/o 'paneo'.
'Back-Forward': Nos permite retroceder o avanzar entre
las operaciones de 'zoom' y/o 'paneo', para poder navegar
entre las vistas generadas por dichas operaciones.

1
0

INTRUCCIN A PYPLOT
'Pan': Permite movernos en (x, y) a travs de la
grafica.
'Zoom': Permite ampliar zonas de la figura para
poderlas ver con ms detalle.
'Configure sobplots': Con esta herramienta podemos
configurar manualmente parmetros de las graficas
como: altura, anchura, espacios laterales, etc...
'Save': Nos permite exportar la imagen a formato de
imagen como: raw, png, pdf, poscript, etc..

1
1

CREACIN DE MULTIPLES
GRAFICAS (Subplot)
MATPLOTLIB nos permite trabajar con varias grficas en una
sola ventana, a continuacin crearemos dos grficas,por lo
que sera necesario crear un nuevo archivo con extensin '.py'

1
2

CREACIN DE MULTIPLES
GRAFICAS (Subplot)

1
3

CREACIN DE MULTIPLES
GRAFICAS (Subplot)

1
4

CREACIN DE MULTIPLES
GRAFICAS (Subplot)

1
5

CREACIN DE MULTIPLES
GRAFICAS (Subplot)
As debera verse
el resultado en
pantalla.

1
6

CREACIN DE MULTIPLES
GRAFICAS (Subplot)
Ahora supongamos que necesitamos DEMASIADAS
graficas, las cuales cuales no podran verse bien en una
sola ventana, lo cual nos obligara a crear una segunda
ventana, creamos un nuevo archivo '.py' y escribimos el
siguiente codigo:

1
7

CREACIN DE MULTIPLES
GRAFICAS (Subplot)

1
8

CREACIN DE MULTIPLES
GRAFICAS (Subplot)

1
9

CREACIN DE MULTIPLES
GRAFICAS (Subplot)

2
0

CREACIN DE MULTIPLES
GRAFICAS (Subplot)

2
1

CREACIN DE MULTIPLES
GRAFICAS (Subplot)
El resultado debera verse as:

2
2

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Podemos editar las propiedades estticas de una figura,
por ejemplo si tenemos algo as:

2
3

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Que se ve as:

2
4

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Cambiamos la apariencia modificando esta linea:

Por esta linea:

2
5

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Ahora debera verse as:

2
6

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Ahora aadamos algo de texto, ANTES de esta linea:

Agregamos lo siguiente:

2
7

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Ahora debera verse as:

2
8

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS

Con la siguiente linea:

2
9

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Lo cual aadir el titulo a la parte superior de la grafica:

3
0

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Con el siguiente cdigo:

3
1

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Aadimos una pequea ecuacin en formato LATEX:

3
2

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Y con el siguiente cdigo:

3
3

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Aadimos una segunda ecuacin en formato LATEX:

3
4

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Existen otras formas de agregar anotaciones a nuestra
grfica como por ejemplo:

3
5

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Lo cual aadir una anotacin (con la flecha incluida) a
nuestra grfica:

3
6

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
La grfica se vera finalmente as:

3
7

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
NO OLVIDEMOS ESTE cdigo AL FINAL de nuestro
archivo '.py'!:

3
8

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Otra forma de es introducir un 'legend', para el siguiente
ejemplo (No olvide crear un nuevo archivo '.py'):

3
9

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Deberamos tener el siguiente resultado:

4
0

EDITANDO LAS PROPIEDADES


DE LAS GRAFICAS
Deberamos tener el siguiente resultado:

4
1

MANEJO DE EVENTOS
Como lo mencionamos anteriormente MATPLOTLIB
puede interaccionar con libreras externas como Gtk
para poder desarrollar aplicaciones ms complejas, para
esto se provee de una API que permite trabajar con
eventos comunes como hacer click en partes
determinadas sobre la grfica (picking),el movimientos
del mouse sobre reas predeterminadas ('mouse enter
and leave'), arrastrar objetos ('Dragg'), etc...
A continuacin crearemos archivos '.py' para los ejemplos
que vamos a implementar:
Picking.py
Dragg.py
Hover.py ('mouse enter and leave')
4
2

MANEJO DE EVENTOS: Picking

4
3

MANEJO DE EVENTOS: Picking

4
4

MANEJO DE EVENTOS: Picking

4
5

MANEJO DE EVENTOS: Picking

4
6

MANEJO DE EVENTOS: Picking


En pantalla deberamos ver algo as:

4
7

MANEJO DE EVENTOS: Picking


Y en la consola deberamos ver esto al hacer click sobre los
puntos de la grfica:

4
8

MANEJO DE EVENTOS: Dragg

4
9

MANEJO DE EVENTOS: Dragg

5
0

MANEJO DE EVENTOS: Dragg

5
1

MANEJO DE EVENTOS: Dragg

5
2

MANEJO DE EVENTOS: Dragg

5
3

MANEJO DE EVENTOS: Dragg

5
4

MANEJO DE EVENTOS: Dragg

5
5

MANEJO DE EVENTOS: Dragg


En pantalla deberamos ver algo as:

5
6

MANEJO DE EVENTOS: Dragg


Y deberamos arrastrar los rectngulos al hacer click sobre ellos:

5
7

MANEJO DE EVENTOS: Dragg


Y en la consola deberamos ver algo as:

5
8

MANEJO DE EVENTOS: Hover


('mouse enter and leave')

5
9

MANEJO DE EVENTOS: Hover


('mouse enter and leave')

6
0

MANEJO DE EVENTOS: Hover


('mouse enter and leave')
En pantalla deberamos ver algo as:

6
1

MANEJO DE EVENTOS: Hover


('mouse enter and leave')
Al pasar el mouse sobre las figuras deberamos ver esto:

6
2

MANEJO DE EVENTOS: Hover


('mouse enter and leave')
Y en la consola deberamos ver esto:

6
3

ANIMACIONES

6
4

ANIMACIONES

6
5

ANIMACIONES

6
6

ANIMACIONES
En pantalla deberamos ver algo as:

6
7

Plot 3D

6
8

Plot 3D

6
9

Plot 3D

7
0

Plot 3D
En pantalla deberamos ver algo as:

7
1

Creacin de Interfaces de Usuarios


(UI)
Una de las caractersticas ms interesantes recientemente
implementadas dentro de MATPLOTLIB, es la capacidad de crear
interfaces de usuario, permitindonos as crear aplcacines mucho
ms interactivas.
MATPLOTLIB posee dentro de s la librera 'widgets', que nos
permite crear controles de usuario bsico controles de interfaz de
usuario como por ejemplo: botones, 'sliders', 'checkbuttons',
'menus', etc...
Sin embargo AUNQUE SU ESTABILIDAD NO ESTA
GARANTIZADA, MATPLOTLIB tambin puede servirse de librerias
de terceros como qt, tkinter, gtk, etc...

7
2

Creacin de Interfaces de Usuarios


(UI): Widgets

7
3

Creacin de Interfaces de Usuarios


(UI): Widgets

7
4

Creacin de Interfaces de Usuarios


(UI): Widgets

7
5

Creacin de Interfaces de Usuarios


(UI): Widgets

7
6

Creacin de Interfaces de Usuarios


(UI): Widgets

7
7

Creacin de Interfaces de Usuarios


(UI): Widgets

7
8

Creacin de Interfaces de Usuarios


(UI): Widgets

7
9

Creacin de Interfaces de Usuarios


(UI): Widgets

8
0

Creacin de Interfaces de Usuarios


(UI): Widgets

8
1

Creacin de Interfaces de Usuarios


(UI): Widgets

8
2

Creacin de Interfaces de Usuarios


(UI): Widgets
Finalmente este es el resultado que deberamos ver en pantalla:

8
3

Creacin de Interfaces de Usuarios


(UI): Tkinter
Tkinter es una librera integrada en Python que nos permite crear
interfaces de usuario como alternativa a las libreras de 'matplotlib',
en caso de que deseemos desarrollar interfaces de usuario ms
complejas y que se acerquen a una aplicacin de escritorio comun.
A continuacin haremos un ejemplo similar al ejemplo anterior
hecho con 'matplotlib', para mostrar las diferencias e cuanto
sintaxis.

8
4

Creacin de Interfaces de Usuarios


(UI): Tkinter

8
5

Creacin de Interfaces de Usuarios


(UI): Tkinter

8
6

Creacin de Interfaces de Usuarios


(UI): Tkinter

8
7

Creacin de Interfaces de Usuarios


(UI): Tkinter

8
8

Creacin de Interfaces de Usuarios


(UI): Tkinter

8
9

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
0

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
1

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
2

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
3

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
4

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
5

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
6

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
7

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
8

Creacin de Interfaces de Usuarios


(UI): Tkinter

9
9

Creacin de Interfaces de Usuarios


(UI): Tkinter

1
0

Creacin de Interfaces de Usuarios


(UI): Tkinter

1
0

Creacin de Interfaces de Usuarios


(UI): Tkinter

1
0

Creacin de Interfaces de Usuarios


(UI): Tkinter

1
0

Creacin de Interfaces de Usuarios


(UI): Tkinter
Finalmente este es el resultado que deberamos ver en pantalla:

1
0

Otras Interfaces de Usuarios (UI)


Existen muchas ms libreras de terceros para crear
interfaces de usuario como wxWidgets, Gtk+, Qt, etc... sin
embargo algunas no son lo suficientemente estables o no
estn bien soportadas por sus creadores para ms
documentacin consultar:
http://www.wxpython.org/
http://www.pygtk.org/
https://live.gnome.org/PyGObject
http://zetcode.com/tutorials/pyqt4/
http://qt-project.org/wiki/Category:LanguageBindings::PyS
ide
http://www.zonaqt.com/content/introducci%C3%B3n-practi
ca-qt-en-python
1
0

BIBLIOGRAFIA
[1] http://matplotlib.org/
[2] http://matplotlib.org/users/pyplot_tutorial.html
[3] http://matplotlib.org/examples/index.html
[4] http://matplotlib.org/gallery.html

1
0

SOBRE EL AUTOR Y EL CONTENIDO


A menos que se informe de otra manera esta obra est bajo una licencia de
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.5
Colombia.

Diego Camilo Pea Ramrez


Bogot, Colombia
Abril de 2013
Twitter: @nervencid
1
0

S-ar putea să vă placă și