Graficando funciones discontinuas con Matplotlib

A continuación, mostramos la gráfica de $f(x) = \dfrac 1 x$. Esta función tiene un punto de discontinuidad en $x=0$.


In [1]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [2]:
import numpy as np
import matplotlib.pylab as plt

x = np.linspace(-1, 1)
y = 1/x

plt.plot(x, y)
plt.show()


Se puede ver que los puntos más próximos al punto de discontinuidad $x=0$ estan unidos por una línea recta. Para evitar esto, asignamos el valor np.nan (Not A Number) a uno de los valores cerca el punto de discontinuidad utilizando la función np.diff y la funcionalidad de selección de elementos de un arreglo numpy basada en una comparación, en este caso, seleccionamos los índices que tienen una diferencia con el consecutivo mayor a $.5$.

Dependiendo el tipo de función que queremos graficar, este umbral de $.5$ podría ser mayor o menor.


In [3]:
y[np.diff(y) > .5] = np.nan

plt.plot(x, y)
plt.show()


En resumen, asignamos el valor np.nan a los puntos que queremos evitar que Matplotlib una este punto con el siguiente mediante una recta.

Para más información, ver el tutorial y la documentación de Matplotlib: http://matplotlib.org/users/pyplot_tutorial.html