#!/usr/bin/python
# -*- coding: utf8 -*-
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
from math import *
code_website = 'http://commons.wikimedia.org/wiki/User:Geek3/mplwp'
try:
import mplwp
except ImportError, er:
print 'ImportError:', er
print 'You need to download mplwp.py from', code_website
exit(1)
name = 'mplwp_hyperbolic functions.svg'
fig = mplwp.fig_standard(mpl)
xlim = -4,4; fig.gca().set_xlim(xlim)
ylim = -4,4; fig.gca().set_ylim(ylim)
mplwp.mark_axeszero(fig.gca())
x = np.linspace(xlim[0], xlim[1], 5001)
y1 = [sinh(xx) for xx in x]
plt.plot(x, y1, label='sinh', zorder=-1)
y2 = [cosh(xx) for xx in x]
plt.plot(x, y2, label='cosh', zorder=-2)
y3 = [tanh(xx) for xx in x]
plt.plot(x, y3, label='tanh', zorder=-3)
f4 = lambda x: 1.0 / tanh(x) if abs(x) > 1e-2 else float('NaN')
y4 = [f4(xx) for xx in x]
plt.plot(x, y4, label='coth', zorder=-4)
f5 = lambda x: 1.0 / cosh(x)
y5 = [f5(xx) for xx in x]
plt.plot(x, y5, label='sech', zorder=-5)
f6 = lambda x: 1.0 / sinh(x) if abs(x) > 1e-2 else float('NaN')
y6 = [f6(xx) for xx in x]
plt.plot(x, y6, label='csch', zorder=-6)
mpl.rc('legend', borderaxespad=1.0)
plt.legend(loc='lower right', ncol=2, columnspacing=1.3, handletextpad=0.5,
bbox_to_anchor=(1, 0.074)).get_frame().set_alpha(0.9)
plt.savefig(name)
mplwp.postprocess(name)