matplotlib练习题

1. Plotting a function:

         

    代码如下:

import numpy as np   
import matplotlib.pyplot as plt

x=np.arange(0,2,0.01)
y=np.sin((x-2)*np.exp(-x**2))**2
plt.plot(x,y)
plt.xlabel('x label')
plt.ylabel('y label')
plt.title('Plotting a function')
plt.show()

    运行结果:

    matplotlib练习题_第1张图片


2. Data :

   matplotlib练习题_第2张图片


分析在代码的注释中。

    代码如下:

import numpy as np   
import matplotlib.pyplot as plt
from scipy.optimize import leastsq

X=np.random.randint(1,10,size=(20,10))
b=np.random.randint(1,10,size=(10,1))
z=np.random.normal(0,1,size=(20,1)) #首先把X矩阵和向量b,正态分布向量z创建好
y=np.dot(X,b)+z                     #把y向量算出来

def err(b,X,y):
	b=b.reshape(10,1)
	ans=np.dot(X,b)-y 
	return ans.reshape(-1)      #因为需要返回的是行向量而不是列向量,所以让ans变形

after_b=leastsq(err,b,args=(X,y))  #通过调用leastsq函数算出b的最小二乘,err为误差函数。

after_b=after_b[0]        #返回的第一个元素就是b的最小二乘后的tuple

x = np.array(range(0,10))  #用x来标记第几个参数

plt.scatter(x,list(b),marker='x', label='True')    #将原来的b和最小二乘后的b都打印出来,通过图像做对比。
plt.scatter(x,list(after_b),marker='.', label='Estimated')  
plt.xlabel('index')  
plt.ylabel('value')  
plt.legend()  
plt.show()  


    结果如下:

matplotlib练习题_第3张图片

符合期望。


3.   :

    

不会做,在寻求同学的帮助后,在   http://jpktd.blogspot.hk/2009/03/using-gaussian-kernel-density.html

中找到了参考的代码,学习后对照着打了一个。 

代码如下:

import numpy as np  
from scipy import stats  
import matplotlib.pylab as plt  
z = np.random.normal(0,4,size=(10000))  
gkde=stats.gaussian_kde(z)  
ind = np.linspace(-10,20,101)  
kdepdf = gkde.evaluate(ind)  
plt.figure()  
# plot histgram of sample  
plt.hist(z, bins=25, normed=True, color='r',edgecolor='black')  
# plot estimated density  
plt.plot(ind, kdepdf, label='kde', color="b")  
plt.title('Kernel Density Estimation')  
plt.legend()  
plt.show()  




    结果如下:

    matplotlib练习题_第4张图片

    


    

你可能感兴趣的:(matplotlib练习题)