- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2022-6-20 14:34:16
|
显示全部楼层
2、美观但不准的scipy.interpolate.interp2d
三角网与interp2d的插值效果如下,散圆点代表原始数据,
由图可见,interp2d仅仅是美观,插值结果的值和位置都对不上。
源代码:
import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt
# 生成xyz作为画图数据:
x = np.linspace(-100,0,5)
y = np.linspace(100,300,8)
xx, yy = np.meshgrid(x, y)
z=np.random.randint(13,19,(len(y),len(x)))
# 以下函数根据xyz的数据,自动获得z=f(x,y)中的函数f:
f = interpolate.interp2d(x, y, z, kind='cubic')
# 再准备x2和y2:
x2=np.linspace(np.min(x),np.max(x),100)
y2=np.linspace(np.min(y),np.max(y),100)
# 用f计算出值:
z2= f(x2, y2)
# 拟合前:
plt.subplot(1,2,1)
plt.contourf(x,y,z,cmap='jet')
plt.colorbar()
plt.scatter(xx,yy,z,c=z,cmap='jet')
# 拟合后:
plt.subplot(1,2,2)
plt.contourf(x2,y2,z2,cmap='jet')
plt.colorbar()
plt.scatter(xx,yy,z,c=z,cmap='jet')
plt.show()
|
|