Está en la página 1de 19

9/10/2018 Jupyter Notebook Viewer

curso_python_alicante (/github/Pybonacci/curso_python_alicante/tree/master)
/
03_visualizacion-matplotlib.ipynb (/github/Pybonacci/curso_python_alicante/tree/master/03_visualizacion-matplotlib.ipynb)

Parte 3 - Visualización con matplotlib

¿Qué es matplotlib?

Estándar de facto para visualización en Python


Pretende ser similar a las funciones de visualización de MATLAB
Diferentes formas de usarla: interfaz pyplot y orientada a objetos

Lo primero que vamos a hacer es activar el modo inline - de esta manera las figuras aparecerán automáticamente
incrustadas en el notebook.

In [1]:

%matplotlib inline

Importamos los paquetes necesarios:

In [2]:

import numpy as np
import matplotlib.pyplot as plt

La biblioteca matplotlib es gigantesca y es difícil hacerse una idea global de todas sus posibilidades en una primera
toma de contacto. Es recomendable tener a mano la documentación y la galería:

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 1/19
9/10/2018 Jupyter Notebook Viewer

In [12]:

from IPython.display import HTML


HTML('<iframe src="http://matplotlib.org/gallery.html#pylab_examples" width="800" height="600">

Out[12]:

accented_text agg_buffer

agg_buffer_to_array agg_buffer_to_array

alignment_test anchored_artists

Si hacemos clic en cualquiera de las imágenes, accedemos al código fuente que la ha generado:

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 2/19
9/10/2018 Jupyter Notebook Viewer

In [13]:

HTML('<iframe src="http://matplotlib.org/examples/pylab_examples/annotation_demo.html" width="8

Out[13]:

home | examples | gallery | pyplot | docs » Matplotlib Examples » previous | ne


pylab_examples Examples » Depsy 10

pylab_examples example code: Travis-CI:


annotation_demo.py Related T
(Source code)
Document
Matplot
pylab
Pr
py
co
Ne
ex
an

This Page

Show Sou

Quick sea

Interfaz pyplot

Función plot

La interfaz pyplot proporciona una serie de funciones que operan sobre un estado global - es decir, nosotros no
especificamos sobre qué gráfica o ejes estamos actuando. Es una forma rápida y cómoda de crear gráficas pero
perdemos parte del control.

El paquete pyplot se suele importar bajo el alias plt , de modo que todas las funciones se acceden a través de
plt.<funcion> . La función más básica es la función plot :

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 3/19
9/10/2018 Jupyter Notebook Viewer

In [3]:

plt.plot([0, 0.1, 0.2, 0.5,0.6], [1, -1, 0, 3, -1])

Out[3]:

[<matplotlib.lines.Line2D at 0x7f77925ac450>]

La función plot recibe una sola lista (si queremos especificar los valores y) o dos listas (si especificamos x e y).
Naturalmente si especificamos dos listas ambas tienen que tener la misma longitud.

La tarea más habitual a la hora de trabajar con matplotlib es representar una función. Lo que tendremos que hacer es
definir un dominio y evaluarla en dicho dominio. Por ejemplo:

2
−x
f (x) = e

In [4]:

def f(x):
return np.exp(-x ** 2)

Definimos el dominio con la función np.linspace , que crea un vector de puntos equiespaciados:

In [5]:

x = np.linspace(-1, 5, num=30)

Y representamos la función:

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 4/19
9/10/2018 Jupyter Notebook Viewer

In [9]:

plt.plot(x, f(x), label="Función f(x)")


plt.xlabel("Eje $x$")
plt.ylabel("$f(x)$")
plt.legend()
plt.title("Función $f(x)$")

Out[9]:

<matplotlib.text.Text at 0x7f779236b210>

Notamos varias cosas:

Con diversas llamadas a funciones dentro de plt. se actualiza el gráfico actual. Esa es la forma de trabajar
con la interfaz pyplot.
Podemos añadir etiquetas, y escribir LATEX en ellas. Tan solo hay que encerrarlo entre signos de dólar $$.

Personalización

La función plot acepta una serie de argumentos para personalizar el aspecto de la función. Con una letra podemos
especificar el color, y con un símbolo el tipo de línea.

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 5/19
9/10/2018 Jupyter Notebook Viewer

In [19]:

plt.plot(x, f(x), 'ro')


plt.plot(x, 1 - f(x), 'g--')

Out[19]:

[<matplotlib.lines.Line2D at 0x7f7792343290>]

Esto en realidad son códigos abreviados, que se corresponden con argumentos de la función plot :

In [34]:

plt.plot(x, f(x), color='red', linestyle='', marker='o')


plt.plot(x, 1 - f(x), c='g', ls='--')

Out[34]:

[<matplotlib.lines.Line2D at 0x7f77919f3890>]

La lista de posibles argumentos y abreviaturas está disponible en la documentación de la función plot


http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot
(http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot).

Otro tipo de gráficas

La función scatter muestra una nube de puntos, con posibilidad de variar también el tamaño y el color.

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 6/19
9/10/2018 Jupyter Notebook Viewer

In [37]:

N = 100
x = np.random.randn(N)
y = np.random.randn(N)

plt.scatter(x, y)

Out[37]:

<matplotlib.collections.PathCollection at 0x7f7791f05750>

Con s y c podemos modificar el tamaño y el color respectivamente. Para el color, a cada valor numérico se le
asigna un color a través de un mapa de colores; ese mapa se puede cambiar con el argumento cmap . Esa
correspondencia se puede visualizar llamando a la función colorbar .

In [48]:

s = 50 + 50 * np.random.randn(N)
c = np.random.randn(N)

plt.scatter(x, y, s=s, c=c, cmap=plt.cm.Blues)


plt.colorbar()

Out[48]:

<matplotlib.colorbar.Colorbar at 0x7f77911ab590>

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 7/19
9/10/2018 Jupyter Notebook Viewer

In [49]:

plt.scatter(x, y, s=s, c=c, cmap=plt.cm.Oranges)


plt.colorbar()

Out[49]:

<matplotlib.colorbar.Colorbar at 0x7f7791107d90>

matplotlib trae por defecto muchos mapas de colores. En las SciPy Lecture Notes dan una lista de todos ellos:

La función contour se utiliza para visualizar las curvas de nivel de funciones de dos variables y está muy ligada a
la función np.meshgrid . Veamos un ejemplo:

2
f (x) = cos x + sin y

In [50]:

def f(x, y):


return np.cos(x) + np.sin(y) ** 2

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 8/19
9/10/2018 Jupyter Notebook Viewer

In [52]:

x = np.linspace(-2, 2)
y = np.linspace(-2, 2)
xx, yy = np.meshgrid(x, y)

plt.contour(xx, yy, f(xx, yy))


plt.colorbar()

Out[52]:

<matplotlib.colorbar.Colorbar at 0x7f7790f79410>

La función contourf es casi idéntica pero rellena el espacio entre niveles. Podemos especificar manualmente
estos niveles usando el cuarto argumento:

In [60]:

zz = f(xx, yy)
plt.contourf(xx, yy, zz, np.linspace(-0.5, 2.0))
plt.colorbar()

Out[60]:

<matplotlib.colorbar.Colorbar at 0x7f77906da910>

Para guardar las gráficas en archivos aparte podemos usar la función plt.savefig . matplotlib usará el tipo de
archivo adecuado según la extensión que especifiquemos. Veremos esto con más detalle cuando hablemos de la
interfaz orientada a objetos.

Interfaz orientada a objetos


http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 9/19
9/10/2018 Jupyter Notebook Viewer

In [24]:

Out[24]:

array([-1. , -0.79310345, -0.5862069 , -0.37931034, -0.17241379,


0.03448276, 0.24137931, 0.44827586, 0.65517241, 0.86206897,
1.06896552, 1.27586207, 1.48275862, 1.68965517, 1.89655172,
2.10344828, 2.31034483, 2.51724138, 2.72413793, 2.93103448,
3.13793103, 3.34482759, 3.55172414, 3.75862069, 3.96551724,
4.17241379, 4.37931034, 4.5862069 , 4.79310345, 5. ])

In [25]:

f(x)

Out[25]:

array([ 3.67879441e-01, 5.33117686e-01, 7.09185234e-01,


8.65994832e-01, 9.70710971e-01, 9.98811646e-01,
9.43400884e-01, 8.17952307e-01, 6.50996579e-01,
4.75607235e-01, 3.18960733e-01, 1.96356377e-01,
1.10961373e-01, 5.75595853e-02, 2.74083260e-02,
1.19802640e-02, 4.80694649e-03, 1.77048075e-03,
5.98593712e-04, 1.85777072e-04, 5.29262471e-05,
1.38410522e-05, 3.32266179e-06, 7.32187295e-07,
1.48107572e-07, 2.75011817e-08, 4.68753445e-09,
7.33426522e-10, 1.05338655e-10, 1.38879439e-11])

In [28]:

fig, axes = plt.subplots()

axes.plot(x, f(x), 'ro', label="Función F(x)")


axes.set_xlim(-2, 4)
axes.set_ylim(-1, 2)

fig.savefig("grafica1.png")

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 10/19
9/10/2018 Jupyter Notebook Viewer

In [35]:

fig, axes = plt.subplots(1, 2, sharey=True)

axes[0].plot(x, f(x), color="blue")


axes[0].set_xlabel("Eje x")

axes[1].plot(x, -f(x), 'r')


axes[1].set_xlabel("Eje x de la gráfica derecha")

Out[35]:

<matplotlib.text.Text at 0x7f70c765f750>

In [40]:

x = np.random.randn(100)
y = np.random.randn(100)

s = 200 * np.random.randn(100)
c = np.random.randn(100)

plt.scatter(x, y, s, c, cmap=plt.cm.BrBG_r)

Out[40]:

<matplotlib.collections.PathCollection at 0x7f70c7338b50>

2
g(x, y) = cos(x) + sin(y)

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 11/19
9/10/2018 Jupyter Notebook Viewer

In [45]:

x = np.linspace(-2, 2)
y = np.linspace(-2, 2)

xx, yy = np.meshgrid(x, y)

In [47]:

def g(x, y):


return np.cos(x) + np.sin(y) ** 2

In [48]:

zz = g(xx, yy)

In [55]:

fig, axes = plt.subplots()

axes.contourf(xx, yy, zz, np.linspace(-1, 1), cmap=plt.cm.autumn)

Out[55]:

<matplotlib.contour.QuadContourSet at 0x7f70c6dc52d0>

fig, axes = plt.subplots


Diferencias de conceptos

Ejemplo con datos reales

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 12/19
9/10/2018 Jupyter Notebook Viewer

In [57]:

!cat temperaturas.csv

STATION,DATE,TMAX,TMIN
GHCND:USW00094728,20130101,44,-33
GHCND:USW00094728,20130102,6,-56
GHCND:USW00094728,20130103,0,-44
GHCND:USW00094728,20130104,28,-11
GHCND:USW00094728,20130105,56,0
GHCND:USW00094728,20130106,78,11
GHCND:USW00094728,20130107,72,28
GHCND:USW00094728,20130108,89,17
GHCND:USW00094728,20130109,94,39
GHCND:USW00094728,20130110,83,44
GHCND:USW00094728,20130111,78,28
GHCND:USW00094728,20130112,83,56
GHCND:USW00094728,20130113,100,61
GHCND:USW00094728,20130114,133,33
GHCND:USW00094728,20130115,33,17
GHCND:USW00094728,20130116,28,0
GHCND:USW00094728,20130117,61,17
GHCND:USW00094728,20130118,17,-39
GHCND:USW00094728,20130119,106,-11
GHCND:USW00094728,20130120,117,-11
GHCND:USW00094728,20130121,0,-33
GHCND:USW00094728,20130122,-28,-106
GHCND:USW00094728,20130123,-67,-117
GHCND:USW00094728,20130124,-56,-111
GHCND:USW00094728,20130125,-44,-106
GHCND:USW00094728,20130126,-28,-94
GHCND:USW00094728,20130127,11,-72
GHCND:USW00094728,20130128,22,-17
GHCND:USW00094728,20130129,94,22
GHCND:USW00094728,20130130,150,39
GHCND:USW00094728,20130131,161,-11
GHCND:USW00094728,20130201,-6,-44
GHCND:USW00094728,20130202,-17,-72
GHCND:USW00094728,20130203,-11,-44
GHCND:USW00094728,20130204,-11,-50
GHCND:USW00094728,20130205,0,-22
GHCND:USW00094728,20130206,39,-17
GHCND:USW00094728,20130207,0,-33
GHCND:USW00094728,20130208,11,-28
GHCND:USW00094728,20130209,0,-61
GHCND:USW00094728,20130210,22,-78
GHCND:USW00094728,20130211,72,11
GHCND:USW00094728,20130212,67,22
GHCND:USW00094728,20130213,67,6
GHCND:USW00094728,20130214,78,6
GHCND:USW00094728,20130215,128,28
GHCND:USW00094728,20130216,50,-6
GHCND:USW00094728,20130217,0,-78
GHCND:USW00094728,20130218,17,-83
GHCND:USW00094728,20130219,94,6
GHCND:USW00094728,20130220,33,-39
GHCND:USW00094728,20130221,11,-44
GHCND:USW00094728,20130222,33,-39
GHCND:USW00094728,20130223,56,22
GHCND:USW00094728,20130224,83,11
GHCND:USW00094728,20130225,72,0
GHCND:USW00094728,20130226,67,17
GHCND:USW00094728,20130227,83,22
GHCND:USW00094728,20130228,106,39
GHCND:USW00094728,20130301,72,22
GHCND:USW00094728,20130302,44,-6
GHCND:USW00094728,20130303,44,-17
http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 13/19
9/10/2018 Jupyter Notebook Viewer
GHCND:USW00094728,20130304,56,-28
GHCND:USW00094728,20130305,94,-6
GHCND:USW00094728,20130306,56,33
GHCND:USW00094728,20130307,33,6
GHCND:USW00094728,20130308,56,-6
GHCND:USW00094728,20130309,128,17
GHCND:USW00094728,20130310,100,22
GHCND:USW00094728,20130311,122,44
GHCND:USW00094728,20130312,139,61
GHCND:USW00094728,20130313,111,33
GHCND:USW00094728,20130314,50,-17
GHCND:USW00094728,20130315,83,-11
GHCND:USW00094728,20130316,50,0
GHCND:USW00094728,20130317,33,-17
GHCND:USW00094728,20130318,17,-22
GHCND:USW00094728,20130319,61,6
GHCND:USW00094728,20130320,72,0
GHCND:USW00094728,20130321,44,-11
GHCND:USW00094728,20130322,50,-22
GHCND:USW00094728,20130323,78,0
GHCND:USW00094728,20130324,83,6
GHCND:USW00094728,20130325,44,22
GHCND:USW00094728,20130326,117,28
GHCND:USW00094728,20130327,117,22
GHCND:USW00094728,20130328,106,28
GHCND:USW00094728,20130329,128,44
GHCND:USW00094728,20130330,150,44
GHCND:USW00094728,20130331,122,67
GHCND:USW00094728,20130401,167,28
GHCND:USW00094728,20130402,61,6
GHCND:USW00094728,20130403,78,6
GHCND:USW00094728,20130404,117,6
GHCND:USW00094728,20130405,178,50
GHCND:USW00094728,20130406,111,17
GHCND:USW00094728,20130407,128,44
GHCND:USW00094728,20130408,228,106
GHCND:USW00094728,20130409,278,106
GHCND:USW00094728,20130410,233,128
GHCND:USW00094728,20130411,156,83
GHCND:USW00094728,20130412,83,50
GHCND:USW00094728,20130413,144,50
GHCND:USW00094728,20130414,139,78
GHCND:USW00094728,20130415,150,67
GHCND:USW00094728,20130416,172,83
GHCND:USW00094728,20130417,217,128
GHCND:USW00094728,20130418,150,106
GHCND:USW00094728,20130419,217,128
GHCND:USW00094728,20130420,156,61
GHCND:USW00094728,20130421,128,28
GHCND:USW00094728,20130422,128,50
GHCND:USW00094728,20130423,117,50
GHCND:USW00094728,20130424,206,67
GHCND:USW00094728,20130425,189,78
GHCND:USW00094728,20130426,194,100
GHCND:USW00094728,20130427,217,89
GHCND:USW00094728,20130428,206,106
GHCND:USW00094728,20130429,139,111
GHCND:USW00094728,20130430,200,106
GHCND:USW00094728,20130501,206,83
GHCND:USW00094728,20130502,222,94
GHCND:USW00094728,20130503,189,94
GHCND:USW00094728,20130504,206,89
GHCND:USW00094728,20130505,178,78
GHCND:USW00094728,20130506,206,78
GHCND:USW00094728,20130507,233,111
GHCND:USW00094728,20130508,172,128
GHCND:USW00094728,20130509,200,122
http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 14/19
9/10/2018 Jupyter Notebook Viewer
GHCND:USW00094728,20130510,261,150
GHCND:USW00094728,20130511,211,161
GHCND:USW00094728,20130512,211,106
GHCND:USW00094728,20130513,144,72
GHCND:USW00094728,20130514,161,56
GHCND:USW00094728,20130515,206,111
GHCND:USW00094728,20130516,261,167
GHCND:USW00094728,20130517,222,144
GHCND:USW00094728,20130518,183,133
GHCND:USW00094728,20130519,150,128
GHCND:USW00094728,20130520,261,144
GHCND:USW00094728,20130521,300,200
GHCND:USW00094728,20130522,256,150
GHCND:USW00094728,20130523,267,178
GHCND:USW00094728,20130524,183,72
GHCND:USW00094728,20130525,122,72
GHCND:USW00094728,20130526,189,89
GHCND:USW00094728,20130527,228,106
GHCND:USW00094728,20130528,200,133
GHCND:USW00094728,20130529,278,144
GHCND:USW00094728,20130530,322,222
GHCND:USW00094728,20130531,322,239
GHCND:USW00094728,20130601,322,228
GHCND:USW00094728,20130602,311,206
GHCND:USW00094728,20130603,256,189
GHCND:USW00094728,20130604,239,139
GHCND:USW00094728,20130605,233,144
GHCND:USW00094728,20130606,211,150
GHCND:USW00094728,20130607,172,150
GHCND:USW00094728,20130608,250,139
GHCND:USW00094728,20130609,267,172
GHCND:USW00094728,20130610,211,167
GHCND:USW00094728,20130611,267,178
GHCND:USW00094728,20130612,244,183
GHCND:USW00094728,20130613,206,128
GHCND:USW00094728,20130614,222,117
GHCND:USW00094728,20130615,267,161
GHCND:USW00094728,20130616,267,183
GHCND:USW00094728,20130617,289,206
GHCND:USW00094728,20130618,289,178
GHCND:USW00094728,20130619,250,150
GHCND:USW00094728,20130620,267,167
GHCND:USW00094728,20130621,278,178
GHCND:USW00094728,20130622,289,183
GHCND:USW00094728,20130623,311,211
GHCND:USW00094728,20130624,333,233
GHCND:USW00094728,20130625,328,228
GHCND:USW00094728,20130626,294,233
GHCND:USW00094728,20130627,300,228
GHCND:USW00094728,20130628,294,228
GHCND:USW00094728,20130629,283,217
GHCND:USW00094728,20130630,300,228
GHCND:USW00094728,20130701,250,222
GHCND:USW00094728,20130702,278,222
GHCND:USW00094728,20130703,283,228
GHCND:USW00094728,20130704,306,239
GHCND:USW00094728,20130705,322,244
GHCND:USW00094728,20130706,333,256
GHCND:USW00094728,20130707,333,256
GHCND:USW00094728,20130708,317,228
GHCND:USW00094728,20130709,311,233
GHCND:USW00094728,20130710,294,239
GHCND:USW00094728,20130711,289,244
GHCND:USW00094728,20130712,250,200
GHCND:USW00094728,20130713,272,194
GHCND:USW00094728,20130714,322,233
GHCND:USW00094728,20130715,344,256
http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 15/19
9/10/2018 Jupyter Notebook Viewer
GHCND:USW00094728,20130716,344,250
GHCND:USW00094728,20130717,361,261
GHCND:USW00094728,20130718,367,272
GHCND:USW00094728,20130719,356,283
GHCND:USW00094728,20130720,339,272
GHCND:USW00094728,20130721,317,244
GHCND:USW00094728,20130722,300,239
GHCND:USW00094728,20130723,306,228
GHCND:USW00094728,20130724,283,200
GHCND:USW00094728,20130725,200,178
GHCND:USW00094728,20130726,283,183
GHCND:USW00094728,20130727,278,211
GHCND:USW00094728,20130728,256,211
GHCND:USW00094728,20130729,294,206
GHCND:USW00094728,20130730,283,194
GHCND:USW00094728,20130731,283,194
GHCND:USW00094728,20130801,244,189
GHCND:USW00094728,20130802,283,194
GHCND:USW00094728,20130803,256,200
GHCND:USW00094728,20130804,267,189
GHCND:USW00094728,20130805,256,167
GHCND:USW00094728,20130806,278,178
GHCND:USW00094728,20130807,267,211
GHCND:USW00094728,20130808,272,211
GHCND:USW00094728,20130809,294,233
GHCND:USW00094728,20130810,283,211
GHCND:USW00094728,20130811,272,183
GHCND:USW00094728,20130812,278,211
GHCND:USW00094728,20130813,250,200
GHCND:USW00094728,20130814,233,161
GHCND:USW00094728,20130815,256,150
GHCND:USW00094728,20130816,278,178
GHCND:USW00094728,20130817,289,178
GHCND:USW00094728,20130818,244,200
GHCND:USW00094728,20130819,261,189
GHCND:USW00094728,20130820,311,200
GHCND:USW00094728,20130821,322,222
GHCND:USW00094728,20130822,256,217
GHCND:USW00094728,20130823,278,217
GHCND:USW00094728,20130824,267,183
GHCND:USW00094728,20130825,283,178
GHCND:USW00094728,20130826,289,200
GHCND:USW00094728,20130827,306,217
GHCND:USW00094728,20130828,300,217
GHCND:USW00094728,20130829,267,217
GHCND:USW00094728,20130830,294,211
GHCND:USW00094728,20130831,300,228
GHCND:USW00094728,20130901,289,239
GHCND:USW00094728,20130902,278,233
GHCND:USW00094728,20130903,278,200
GHCND:USW00094728,20130904,278,183
GHCND:USW00094728,20130905,267,178
GHCND:USW00094728,20130906,222,139
GHCND:USW00094728,20130907,267,150
GHCND:USW00094728,20130908,283,178
GHCND:USW00094728,20130909,228,139
GHCND:USW00094728,20130910,306,200
GHCND:USW00094728,20130911,356,250
GHCND:USW00094728,20130912,306,211
GHCND:USW00094728,20130913,250,150
GHCND:USW00094728,20130914,194,122
GHCND:USW00094728,20130915,228,106
GHCND:USW00094728,20130916,228,133
GHCND:USW00094728,20130917,183,100
GHCND:USW00094728,20130918,222,106
GHCND:USW00094728,20130919,256,128
GHCND:USW00094728,20130920,261,156
http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 16/19
9/10/2018 Jupyter Notebook Viewer
GHCND:USW00094728,20130921,250,161
GHCND:USW00094728,20130922,206,122
GHCND:USW00094728,20130923,189,100
GHCND:USW00094728,20130924,228,83
GHCND:USW00094728,20130925,228,111
GHCND:USW00094728,20130926,217,144
GHCND:USW00094728,20130927,206,139
GHCND:USW00094728,20130928,228,133
GHCND:USW00094728,20130929,222,139
GHCND:USW00094728,20130930,239,133
GHCND:USW00094728,20131001,278,150
GHCND:USW00094728,20131002,283,178
GHCND:USW00094728,20131003,256,172
GHCND:USW00094728,20131004,300,189
GHCND:USW00094728,20131005,244,178
GHCND:USW00094728,20131006,211,183
GHCND:USW00094728,20131007,244,156
GHCND:USW00094728,20131008,194,122
GHCND:USW00094728,20131009,167,117
GHCND:USW00094728,20131010,183,122
GHCND:USW00094728,20131011,200,156
GHCND:USW00094728,20131012,222,156
GHCND:USW00094728,20131013,183,133
GHCND:USW00094728,20131014,189,111
GHCND:USW00094728,20131015,222,117
GHCND:USW00094728,20131016,194,133
GHCND:USW00094728,20131017,228,161
GHCND:USW00094728,20131018,200,128
GHCND:USW00094728,20131019,178,111
GHCND:USW00094728,20131020,172,100
GHCND:USW00094728,20131021,189,100
GHCND:USW00094728,20131022,194,106
GHCND:USW00094728,20131023,128,72
GHCND:USW00094728,20131024,122,50
GHCND:USW00094728,20131025,117,44
GHCND:USW00094728,20131026,128,50
GHCND:USW00094728,20131027,144,78
GHCND:USW00094728,20131028,161,61
GHCND:USW00094728,20131029,133,67
GHCND:USW00094728,20131030,156,83
GHCND:USW00094728,20131031,189,117
GHCND:USW00094728,20131101,211,150
GHCND:USW00094728,20131102,200,128
GHCND:USW00094728,20131103,128,28
GHCND:USW00094728,20131104,78,17
GHCND:USW00094728,20131105,128,50
GHCND:USW00094728,20131106,161,94
GHCND:USW00094728,20131107,178,67
GHCND:USW00094728,20131108,100,44
GHCND:USW00094728,20131109,100,33
GHCND:USW00094728,20131110,161,67
GHCND:USW00094728,20131111,117,61
GHCND:USW00094728,20131112,111,-5
GHCND:USW00094728,20131113,39,-16
GHCND:USW00094728,20131114,111,6
GHCND:USW00094728,20131115,139,67
GHCND:USW00094728,20131116,156,72
GHCND:USW00094728,20131117,156,106
GHCND:USW00094728,20131118,183,106
GHCND:USW00094728,20131119,106,22
GHCND:USW00094728,20131120,67,0
GHCND:USW00094728,20131121,111,17
GHCND:USW00094728,20131122,139,106
GHCND:USW00094728,20131123,122,-5
GHCND:USW00094728,20131124,-10,-49
GHCND:USW00094728,20131125,17,-49
GHCND:USW00094728,20131126,83,6
http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 17/19
9/10/2018 Jupyter Notebook Viewer
GHCND:USW00094728,20131127,167,17
GHCND:USW00094728,20131128,17,-10
GHCND:USW00094728,20131129,39,-16
GHCND:USW00094728,20131130,39,-38
GHCND:USW00094728,20131201,94,22
GHCND:USW00094728,20131202,94,50
GHCND:USW00094728,20131203,117,33
GHCND:USW00094728,20131204,111,50
GHCND:USW00094728,20131205,156,89
GHCND:USW00094728,20131206,167,28
GHCND:USW00094728,20131207,50,0
GHCND:USW00094728,20131208,6,-16
GHCND:USW00094728,20131209,39,-5
GHCND:USW00094728,20131210,28,-10
GHCND:USW00094728,20131211,6,-27
GHCND:USW00094728,20131212,-10,-49
GHCND:USW00094728,20131213,17,-49
GHCND:USW00094728,20131214,11,-55
GHCND:USW00094728,20131215,44,-10
GHCND:USW00094728,20131216,6,-38
GHCND:USW00094728,20131217,0,-43
GHCND:USW00094728,20131218,28,-49
GHCND:USW00094728,20131219,83,-10
GHCND:USW00094728,20131220,117,50
GHCND:USW00094728,20131221,183,106
GHCND:USW00094728,20131222,217,161
GHCND:USW00094728,20131223,178,56
GHCND:USW00094728,20131224,56,-32
GHCND:USW00094728,20131225,-5,-71
GHCND:USW00094728,20131226,22,-10
GHCND:USW00094728,20131227,44,-5
GHCND:USW00094728,20131228,128,22
GHCND:USW00094728,20131229,89,50
GHCND:USW00094728,20131230,72,-49
GHCND:USW00094728,20131231,0,-60
GHCND:USW00094728,20140101,6,-43

In [61]:

datos = np.loadtxt("temperaturas.csv", usecols=(1, 2, 3), skiprows=1, delimiter=',')

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 18/19
9/10/2018 Jupyter Notebook Viewer

In [65]:

fig, axes = plt.subplots()

x = np.arange(len(datos[:, 1]))

temp_media = (datos[:, 1] + datos[:, 2]) / 2

axes.plot(x, datos[:, 1], 'r')


axes.plot(x, datos[:, 2], 'b')
axes.plot(x, temp_media, 'k')

Out[65]:

[<matplotlib.lines.Line2D at 0x7f70c6b449d0>]

Referencias

Documentación pyplot http://matplotlib.org/api/pyplot_api.html (http://matplotlib.org/api/pyplot_api.html)


Tutorial de matplotlib en español http://pybonacci.wordpress.com/tag/tutorial-matplotlib-pyplot/
(http://pybonacci.wordpress.com/tag/tutorial-matplotlib-pyplot/)
Referencia rápida de matplotlib http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html#quick-references
(http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html#quick-references)

http://nbviewer.jupyter.org/github/Pybonacci/curso_python_alicante/blob/master/03_visualizacion-matplotlib.ipynb 19/19