我使用scipy.interpolate.interp1d在两个具有浮点值的数组之间进行线性插值。然后,我用matplotlib绘制了插值函数。但是,我注意到,某些新值(最初未包含在表示x和y数据的数组中)在插入插值函数时会产生不同的结果,与图表所示的结果不同。
我实质上是在寻找平行于x轴的几条线和插值函数的线性曲线之间的交点。通过在线研究,我看到很多人为此目的使用scipy的interpolate.interp1d。
代码如下:
from scipy import interpolate
import matplotlib.pyplot as plt
# Data
size = [12, 9, 6.5, 4.8, 2, 0.85, 0.45, 0.15, 0.07]
poW = [100, 99, 98, 97, 94, 80, 50, 6, 1]
# Approximate function f: size = f(poW)
f = interpolate.interp1d(poW, size, kind="linear")
# Here I create the plot
plt.axes(xscale='log') # scale x-axis
plt.plot(size, poW, "bs", # add data points with blue squares
f(poW), poW, "b") # add a blue trendline
# Draw D_10 as an additional point
plt.plot(f(10), 10, "rx", markersize=15)
# Draw D_30 as an additional point
plt.plot(f(30), 30, "rx", markersize=15)
# Draw D_60 as an additional point
plt.plot(f(60), 60, "rx", markersize=15)
plt.show()
我在plt.show()
之前的最后3行中绘制的其他点与插值函数本身的图所示的相同位置不对应。这对我来说很有趣,我似乎无法在这里找到问题所在。我对matplotlib和scipy相当陌生,所以我确定我一定会丢失一些东西。任何帮助或朝着正确方向指出!