matplotlib Tutorial
Empezando con matplotlib
Buscar..
Observaciones
Visión general
matplotlib es una biblioteca de trazado para Python. Proporciona API orientadas a objetos para incrustar gráficos en aplicaciones. Es similar a MATLAB en capacidad y sintaxis.
Fue escrito originalmente por JDHunter y se está desarrollando activamente. Se distribuye bajo una licencia BSD-Style.
Versiones
Versión | Versiones de Python compatibles | Observaciones | Fecha de lanzamiento |
---|---|---|---|
1.3.1 | 2.6, 2.7, 3.x | Versión estable más antigua | 2013-10-10 |
1.4.3 | 2.6, 2.7, 3.x | Versión estable anterior | 2015-07-14 |
1.5.3 | 2.7, 3.x | Versión estable actual | 2016-01-11 |
2.x | 2.7, 3.x | Última versión de desarrollo | 2016-07-25 |
Instalación y configuración
Existen varias formas de instalar matplotlib, algunas de las cuales dependerán del sistema que esté utilizando. Si tiene suerte, podrá usar un administrador de paquetes para instalar fácilmente el módulo matplotlib y sus dependencias.
Windows
En las máquinas con Windows puede intentar usar el administrador de paquetes pip para instalar matplotlib. Consulte aquí para obtener información sobre la configuración de pip en un entorno Windows.
OS X
Se recomienda que utilice el administrador de paquetes pip para instalar matplotlib. Si necesita instalar algunas de las bibliotecas que no son de Python en su sistema (por ejemplo, libfreetype
), considere usar Homebrew .
Si no puede usar pip por cualquier motivo, intente instalar desde la fuente .
Linux
Lo ideal sería utilizar el administrador de paquetes del sistema o pip para instalar matplotlib, ya sea instalando el paquete python-matplotlib
o ejecutando pip install matplotlib
.
Si esto no es posible (por ejemplo, no tiene privilegios de sudo en la máquina que está usando), entonces puede instalar desde la fuente usando la opción --user
: python setup.py install --user
. Normalmente, esto instalará matplotlib en ~/.local
.
Debian / Ubuntu
sudo apt-get install python-matplotlib
Fedora / Red Hat
sudo yum install python-matplotlib
Solución de problemas
Consulte el sitio web de matplotlib para obtener consejos sobre cómo reparar un matplotlib roto.
Personalizando un gráfico de matplotlib
import pylab as plt
import numpy as np
plt.style.use('ggplot')
fig = plt.figure(1)
ax = plt.gca()
# make some testing data
x = np.linspace( 0, np.pi, 1000 )
test_f = lambda x: np.sin(x)*3 + np.cos(2*x)
# plot the test data
ax.plot( x, test_f(x) , lw = 2)
# set the axis labels
ax.set_xlabel(r'$x$', fontsize=14, labelpad=10)
ax.set_ylabel(r'$f(x)$', fontsize=14, labelpad=25, rotation=0)
# set axis limits
ax.set_xlim(0,np.pi)
plt.draw()
# Customize the plot
ax.grid(1, ls='--', color='#777777', alpha=0.5, lw=1)
ax.tick_params(labelsize=12, length=0)
ax.set_axis_bgcolor('w')
# add a legend
leg = plt.legend( ['text'], loc=1 )
fr = leg.get_frame()
fr.set_facecolor('w')
fr.set_alpha(.7)
plt.draw()
Sintaxis imperativa vs orientada a objetos
Matplotlib admite sintaxis tanto orientada a objetos como imperativa para el trazado. La sintaxis imperativa está diseñada intencionalmente para estar muy cerca de la sintaxis de Matlab.
La sintaxis imperativa (a veces llamada sintaxis 'máquina de estado') emite una serie de comandos que actúan sobre la figura o el eje más reciente (como Matlab). La sintaxis orientada a objetos, por otra parte, actúa explícitamente sobre los objetos (figura, eje, etc.) de interés. Un punto clave en el zen de Python afirma que explícito es mejor que implícito, por lo que la sintaxis orientada a objetos es más pirónica. Sin embargo, la sintaxis imperativa es conveniente para los nuevos conversos de Matlab y para escribir pequeños guiones de argumento "desechables". A continuación se muestra un ejemplo de los dos estilos diferentes.
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0, 2, 0.01)
y = np.sin(4 * np.pi * t)
# Imperative syntax
plt.figure(1)
plt.clf()
plt.plot(t, y)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude (V)')
plt.title('Sine Wave')
plt.grid(True)
# Object oriented syntax
fig = plt.figure(2)
fig.clf()
ax = fig.add_subplot(1,1,1)
ax.plot(t, y)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Amplitude (V)')
ax.set_title('Sine Wave')
ax.grid(True)
Ambos ejemplos producen la misma gráfica que se muestra a continuación.
Arreglos bidimensionales (2D)
Mostrar una matriz bidimensional (2D) en los ejes.
import numpy as np
from matplotlib.pyplot import imshow, show, colorbar
image = np.random.rand(4,4)
imshow(image)
colorbar()
show()