Comenzando con matplotlib

Sintaxis imperativa frente a orientada a objetos

Matplotlib es compatible con la sintaxis imperativa y orientada a objetos para el trazado. La sintaxis imperativa está intencionalmente diseñada para estar muy cerca de la sintaxis de Matlab.

La sintaxis imperativa (a veces llamada sintaxis de ‘máquina de estado’) emite una serie de comandos, todos los cuales actúan en la figura o eje más reciente (como Matlab). La sintaxis orientada a objetos, por otro lado, actúa explícitamente sobre los objetos (figura, eje, etc.) de interés. Un punto clave en zen of Python establece que lo explícito es mejor que lo implícito, por lo que la sintaxis orientada a objetos es más pitónica. Sin embargo, la sintaxis imperativa es conveniente para los nuevos conversos de Matlab y para escribir guiones de trama pequeños y “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 el mismo gráfico que se muestra a continuación.

ingrese la descripción de la imagen aquí

Instalación y configuración

Hay 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.

ventanas

En las máquinas con Windows, puede intentar usar el administrador de paquetes pip para instalar matplotlib. Consulte aquí para obtener información sobre cómo configurar pip en un entorno de 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] (http://brew.sh/).

Si no puede usar pip por cualquier motivo, intente instalar desde [fuente] (https://github.com/matplotlib/matplotlib).

linux

Idealmente, se debe usar 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), puede instalar desde [fuente] (https://github.com/matplotlib/matplotlib) usando la opción --user : python setup.py install --usuario. Normalmente, esto instalará matplotlib en ~/.local.

Debian/Gratis

sudo apt-get install python-matplotlib

Fedora/sombrero rojo

sudo yum install python-matplotlib

Solución de problemas

Consulte el [sitio web de matplotlib] solución de problemas para obtener consejos sobre cómo reparar un matplotlib dañado.

Matrices bidimensionales (2D)

Muestre 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()

Mostrar matriz bidimensional (2D) con matplotlib

Personalizando un diagrama 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()

ingrese la descripción de la imagen aquí

# 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()

ingrese la descripción de la imagen aquí