背景:
python实现插值以及subpot画子图范例。
代码:
import numpy as np
import matplotlib.pyplot as pl
from scipy import interpolate
lb,ub = 0,20
#10个样本点
x = np.linspace(lb,ub,10)
y = 100*np.sqrt(np.abs(np.sin(x)))+x
x_new = np.linspace(lb,ub,100)
#subplot
subplotid = np.array([221,222,212])
#插值方法
method = ['linear', 'nearest', 'zero', 'slinear', 'quadratic', 'cubic']
for value in range(0,6):
#返回线性插值函数
# method[value]对应的差值方法
f_liner = interpolate.interp1d(x,y,kind = method[value])
y_b = f_liner(x_new)
'''
subplotid[value//2]:控制相邻两个占用同一个位置
method[value-value%2:value-value%2+2]:加标题,(子图加图例好像失败?)
'''
pl.subplot(subplotid[value//2],title = str(method[value-value%2:value-value%2+2]))
#偶数个的时候画样本点
if value%2==0:
pl.plot(x,y,'ro')
pl.plot(x_new,y_b,label = method[value])
pl.legend()
pl.show()