import numpy as np
import matplotlib.pyplot as plt
import scipy.special as sp
X = np.arange(-4, 4, 0.01) # range of the graph
plt.clf()
plt.figure(figsize=(4,4))
plt.axes([0.17,0.13,0.79,0.8])
plt.hold(True)
Q = [] # No curves at first.
# Draw the curve of Normal distribution
mu = 0 # mean = 0
sigma = 1 # variance = 1
A = 1/(sigma*np.sqrt(2*np.pi))
B = np.exp(-(X-mu)*(X-mu)/(2*sigma*sigma));
Y = A*B
a = plt.plot(X, Y, '-', color='blue', lw=2)
Q.append(a)
# Draw the curve of Student's t-distribution
mu = 0 # mean = 0
nu = 2 # freedom degree = 2
A = np.exp(sp.gammaln((nu+1)/2.0));
B = np.exp(sp.gammaln(nu/2.0))*np.sqrt(nu*np.pi);
C = (1+X*X/nu)**(-(nu+1)/2.0);
Y = A*C/B;
a = plt.plot(X, Y, '-', color='red', lw=2)
Q.append(a)
# Draw the previous Student's t-distributions
for previous_nu in range(1,nu):
mu = 0 # mean = 0
A = np.exp(sp.gammaln((previous_nu+1)/2.0));
B = np.exp(sp.gammaln(previous_nu/2.0))*np.sqrt(previous_nu*np.pi);
C = (1+X*X/previous_nu)**(-(previous_nu+1)/2.0);
Y = A*C/B;
a = plt.plot(X, Y, '-', color='green', lw=1)
Q.append(a)
# Remaining steps to finish drawing the graph.
plt.xlabel("x")
plt.ylabel("P(x)")
plt.xlim(-4,4)
# Saving the output.
plt.savefig("T_distribution_1df.pdf")
plt.savefig("T_distribution_1df.eps")
plt.savefig("T_distribution_1df.svg")