#!/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_inverse_hyperbolic functions.svg'
fig = mplwp.fig_standard(mpl)
xlim = -4,4; fig.gca().set_xlim(xlim)
ylim = -3,3; fig.gca().set_ylim(ylim)
mplwp.mark_axeszero(fig.gca())
x1 = np.linspace(xlim[0], xlim[1], 5001)
y1 = [asinh(xx) for xx in x1]
plt.plot(x1, y1, label='arsinh', zorder=-1)
y2 = np.linspace(0, acosh(xlim[1]), 5001)
x2 = [cosh(yy) for yy in y2]
plt.plot(x2, y2, label='arcosh', zorder=-3)
plt.plot(x2[0], y2[0], 'o', color=fig.gca().lines[-1].get_color(), zorder=-2)
y3 = np.linspace(ylim[0], ylim[1], 5001)
x3 = [tanh(yy) for yy in y3]
plt.plot(x3, y3, label='artanh', zorder=-4)
def coth(x): return 1.0 / tanh(x)
y4 = np.concatenate((np.linspace(atanh(1./xlim[0]), ylim[0], 3001),
[float('NaN')],
np.linspace(ylim[1], atanh(1./xlim[1]), 3001)))
x4 = [coth(yy) for yy in y4]
plt.plot(x4, y4, label='arcoth', zorder=-5)
def sech(x): return 1.0 / cosh(x)
y5 = np.linspace(0, ylim[1], 5001)
x5 = [sech(yy) for yy in y5]
plt.plot(x5, y5, label='arsech', zorder=-7)
plt.plot(x5[0], y5[0], 'o', color=fig.gca().lines[-1].get_color(), zorder=-6)
def acsch(x): return asinh(1./x)
x6 = np.concatenate((np.linspace(xlim[0], 1./sinh(ylim[0]), 4001),
[float('NaN')],
np.linspace(1./sinh(ylim[1]), xlim[1], 4001)))
y6 = [acsch(xx) for xx in x6]
plt.plot(x6, y6, label='arcsch', zorder=-8)
mpl.rc('legend', borderaxespad=0.8)
plt.legend(loc='upper left', ncol=2, columnspacing=1.1, handletextpad=0.3,
bbox_to_anchor=(0, 0.914)).get_frame().set_alpha(0.9)
plt.savefig(name)
mplwp.postprocess(name)