#!/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_trigonometric_functions_piaxis.svg'
fig = mplwp.fig_standard(mpl)
# add pi to xaxis labels
def flabel(x, i):
if x != int(x):
return ''
return u'{}\u03C0'.format(int(x)).replace('-', u'\u2212')
fig.gca().xaxis.set_major_formatter(mpl.ticker.FuncFormatter(flabel))
xlim = -2,2; 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)
f1 = lambda x: sin(pi*x)
y1 = [f1(xx) for xx in x]
plt.plot(x, y1, label='sin', zorder=-1)
f2 = lambda x: cos(pi*x)
y2 = [f2(xx) for xx in x]
plt.plot(x, y2, label='cos', zorder=-2)
def f3(x):
t = tan(pi*x)
if fabs(t) > 10: return float('NaN')
return t
y3 = [f3(xx) for xx in x]
plt.plot(x, y3, label='tan', zorder=-3)
def f4(x):
s = sin(pi*x)
if fabs(s) < 0.1: return float('NaN')
return cos(pi*x) / s
y4 = [f4(xx) for xx in x]
plt.plot(x, y4, label='cot', zorder=-4)
def f5(x):
c = cos(pi*x)
if fabs(c) < 0.1: return float('NaN')
return 1.0 / c
y5 = [f5(xx) for xx in x]
plt.plot(x, y5, label='sec', zorder=-5)
def f6(x):
s = sin(pi*x)
if fabs(s) < 0.1: return float('NaN')
return 1.0 / s
y6 = [f6(xx) for xx in x]
plt.plot(x, y6, label='csc', zorder=-6)
mpl.rc('legend', borderaxespad=0.8)
plt.legend(loc='upper center', ncol=3).get_frame().set_alpha(0.9)
plt.savefig(name)
mplwp.postprocess(name)