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")